我有一个大型数据框,我正在尝试使用字典作为指南,根据A列中的值填充B列的NaN条目。例如:
df =
A B
0 Red 628
1 Red 149
2 Red NaN
3 Green 575
4 Green 687
5 Green NaN
6 Blue 159
7 Blue NaN
和字典是(例如)
dict = {"Red": 123, "Green": 456, "Blue": 789}
我很好奇使用Pandas用字典中的相应数字替换每个NaN的最佳方法。我不确定如何在这种情况下使用.fillna()或.isnull()方法。我是Pandas的新手,所以对任何帮助表示赞赏!谢谢。
答案 0 :(得分:2)
我认为您的索引看起来不合适,以下是您想要的:
In [19]:
df['B'] = df.set_index('A')['B'].fillna(d).reset_index()['B']
df
Out[19]:
A B
0 Red 628
1 Red 149
2 Red 123
3 Green 575
4 Green 687
5 Green 456
6 Blue 159
7 Blue 789
这里我们将索引设置为列'A'然后调用fillna
传递你的dict,这将使用索引('A')执行查找以返回关联的dict值,然后我们重置索引和覆盖列'B'
答案 1 :(得分:1)
使用rows
(see docs)和boolean indexing
map
选择相关dictionary
,将A
转换为B
值必要的:
na_map = {"Red": 123, "Green": 456, "Blue": 789}
mask = df.B.isnull()
mask
如下所示:
0 False
1 False
2 True
3 False
4 False
5 True
6 False
7 True
最后:
df.loc[mask, 'B'] = df.loc[mask, 'A'].map(na_map)
A B
0 Red 628
1 Red 149
2 Red 123
3 Green 575
4 Green 687
5 Green 456
6 Blue 159
7 Blue 789