我有一个需要分配NaN值的数据帧。我需要分配这些值的方式取决于列'代码'。 NaN值存在于不同的数据框和相同的列'代码中。
我的初始数据框包含NaN值但不是所有行(第三行包含列'资本'以及'国家'的值:
我尝试过:
df1['capital'] = np.where(df1['capital'].isnull() == True, df1['code'].map(df2['capital']), df1['capital']
但是我收到语法错误:'关键字不能成为表达式'。
任何想法如何克服这个?
答案 0 :(得分:1)
IIUC
选项1
df1.columns=df2.columns
pd.concat([df1,df2],axis=0).dropna(axis=0)
选项2
df1.set_index('code').captial.fillna(df2.set_index('col2').captial)
Out[184]:
code
0 B
1 C
2 A
3 D
4 E
Name: captial, dtype: object
数据输入:
d1 = {'code' : [0,1,2,3,4],
'captial' : [np.nan,np.nan,'A',np.nan,np.nan]}
df1 = pd.DataFrame(d1)
d2 = {'col2' : [0,1,3,4],
'captial' : ['B','C','D','E']}
df2 = pd.DataFrame(d2)