我有一本字典,看起来像这样熊猫:填写南带着字典引用另一列
dict = {'b' : '5', 'c' : '4'}
我的数据框看起来像这样
A B
0 a 2
1 b NaN
2 c NaN
有没有一种方法来填充值在NaN值中使用从列A到B的字典映射,同时保留列值的其余部分?
我有一本字典,看起来像这样熊猫:填写南带着字典引用另一列
dict = {'b' : '5', 'c' : '4'}
我的数据框看起来像这样
A B
0 a 2
1 b NaN
2 c NaN
有没有一种方法来填充值在NaN值中使用从列A到B的字典映射,同时保留列值的其余部分?
你可以在里面fillna字典值映射
df.B = df.B.fillna(df.A.map(dict))
打印(DF)
A B
0 a 2
1 b 5
2 c 4
不幸的是,这不是像pd.fillna()
这样的内置函数的选项之一。
编辑:谢谢你的纠正。显然这是可能的,如@A-Za-z的回答所示。
但是,您可以首先在缺失值上对数据框进行子集分类,然后将字典应用到地图上。
df.loc[df['B'].isnull(), 'B'] = df['A'].map(dict)
这可以简单地
df['B'] = df['B'].fillna(df['A'].apply(lambda x: dict.get(x)))
做过这样可以有效的工作,更大的数据集也是如此。