2017-03-17 53 views
4

我有一本字典,看起来像这样熊猫:填写南带着字典引用另一列

dict = {'b' : '5', 'c' : '4'}

我的数据框看起来像这样

A B 
0 a 2 
1 b NaN 
2 c NaN 

有没有一种方法来填充值在NaN值中使用从列A到B的字典映射,同时保留列值的其余部分?

回答

6

你可以在里面fillna字典值映射

df.B = df.B.fillna(df.A.map(dict)) 

打印(DF)

A B 
0 a 2 
1 b 5 
2 c 4 
1

不幸的是,这不是像pd.fillna()这样的内置函数的选项之一。

编辑:谢谢你的纠正。显然这是可能的,如@A-Za-z的回答所示。

但是,您可以首先在缺失值上对数据框进行子集分类,然后将字典应用到地图上。

df.loc[df['B'].isnull(), 'B'] = df['A'].map(dict) 
0

这可以简单地

df['B'] = df['B'].fillna(df['A'].apply(lambda x: dict.get(x))) 

做过这样可以有效的工作,更大的数据集也是如此。