2024-05-14 05:59:25 发布
网友
假设我有一个包含两列的数据帧df
df
c1 c2 0 v1 b1 1 v2 b2 2 v3 b3 3 v4 b4 4 v5 b5
第二个数据帧df2包含c1、c2和其他一些列
df2
c1 c2 c3 c4 0 "" b5 500 3 1 "" b2 420 7 2 "" b1 380 5 3 "" b2 470 9 4 "" b3 290 2
我的目标是将df2中c1的空值替换为df中与c2中的值相对应的值,因此df2中c1的前五个值应分别为v5、v2、v1、v2和v3。最好的方法是什么
类似这样的东西可能就是你想要的:
import pandas as pd import numpy as np # remove the c1 column from df2 df2.drop("c1", axis=1, inplace=True) # merge the 2 dataframes and get the c1 values corresponding to c2 newdf = df.merge(df2, on="c2")
如果列中确实缺少值(即NAs和存在值的某些行,则解决方案将不同)
一个简单的方法是使用基于相似列的熊猫合并
df2.drop('c1', axis=1, inplace=True)main_df = pd.merge(df2, df, on="c2", how="left")df2['c1'] = main_df['c1']df2.columns = ['c1','c2','c3','c4']
df2.drop('c1', axis=1, inplace=True)
main_df = pd.merge(df2, df, on="c2", how="left")
df2['c1'] = main_df['c1']
df2.columns = ['c1','c2','c3','c4']
类似这样的东西可能就是你想要的:
如果列中确实缺少值(即NAs和存在值的某些行,则解决方案将不同)
一个简单的方法是使用基于相似列的熊猫合并
df2.drop('c1', axis=1, inplace=True)
main_df = pd.merge(df2, df, on="c2", how="left")
df2['c1'] = main_df['c1']
df2.columns = ['c1','c2','c3','c4']
相关问题 更多 >
编程相关推荐