【发布时间】:2017-03-17 03:50:19
【问题描述】:
我有一本像这样的字典
dict = {'b' : '5', 'c' : '4'}
我的数据框看起来像这样
A B
0 a 2
1 b NaN
2 c NaN
有没有办法使用从 A 列到 B 列的字典映射来填充 NaN 值,同时保留其余列值?
【问题讨论】:
标签: pandas
我有一本像这样的字典
dict = {'b' : '5', 'c' : '4'}
我的数据框看起来像这样
A B
0 a 2
1 b NaN
2 c NaN
有没有办法使用从 A 列到 B 列的字典映射来填充 NaN 值,同时保留其余列值?
【问题讨论】:
标签: pandas
你可以在fillna里面映射dict值
df.B = df.B.fillna(df.A.map(dict))
打印(df)
A B
0 a 2
1 b 5
2 c 4
【讨论】:
这很简单
df['B'] = df['B'].fillna(df['A'].apply(lambda x: dict.get(x)))
这也适用于更大的数据集。
【讨论】:
不幸的是,这不是像pd.fillna() 这样的内置函数的选项之一。
编辑:感谢您的更正。显然这是可能的,如@Vaishali 的回答所示。
但是,您可以先根据缺失值对数据框进行子集化,然后将地图与您的字典一起应用。
df.loc[df['B'].isnull(), 'B'] = df['A'].map(dict)
【讨论】: