Pandas:用字典引用另一列填充NaN值

时间:2017-03-17 03:50:20

标签: pandas

我有一本看起来像这样的字典

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

我的数据框看起来像这样

   A  B
0  a  2
1  b  NaN
2  c  NaN

是否有办法使用字段映射从A列到B列填充NaN值,同时保留其余的列值?

3 个答案:

答案 0 :(得分:9)

您可以在fillna中映射dict值

'<div>'

打印(DF)

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

答案 1 :(得分:1)

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

编辑:感谢您的纠正。显然这是可能的,如@ Vaishali的回答所示。

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

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

答案 2 :(得分:1)

这可以简单地完成

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

这也可以有效地用于更大的数据集。