我有两个下面的数据框df1
和df2
df1:
A B C D
1 Nora NaN Japan
2 Neo NaN India
3 Nord NaN Fuji
4 Noman 2020 Unknown
df2:
E F
1123 Neo
1124 Norm
1126 Nora
我需要在df1
中执行fillna,并仅对在df2
中具有条目的那些值从df2
中取值。
结果数据框: df1:
A B C D
1 Nora 1126 Japan
2 Neo 1123 India
3 Nord NaN Fuji
4 Noman 2020 Unknown
有什么办法可以做到这一点吗?我不想循环,因为我有巨大的数据框,这可能会降低代码的性能。
答案 0 :(得分:2)
您可以将列F
设置为第二个df2中的索引,然后使用pd.Series.map
将其用作映射,然后将其用作填充值。
mapping = df2.set_index('F').squeeze()
df1['C'] = df1['C'].fillna(df['B'].map(mapping))
A B C D
0 1 Nora 1126.0 Japan
1 2 Neo 1123.0 India
2 3 Nord NaN Fuji
3 4 Noman 2020.0 Unknown