对于列中的所有空值(NaN),如何获取存在于不同数据帧中的相应值?

时间:2017-10-07 18:47:49

标签: python pandas dataframe mapping vlookup

我有一个需要分配NaN值的数据帧。我需要分配这些值的方式取决于列'代码'。 NaN值存在于不同的数据框和相同的列'代码中。

我的初始数据框包含NaN值但不是所有行(第三行包含列'资本'以及'国家'的值: enter image description here

我想从下面的数据框中分配值: enter image description here

最终结果是这样的: enter image description here

我尝试过:

df1['capital'] = np.where(df1['capital'].isnull() == True, df1['code'].map(df2['capital']), df1['capital']

但是我收到语法错误:'关键字不能成为表达式'。

任何想法如何克服这个?

1 个答案:

答案 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)