大熊猫数据框中的条件fillna()

时间:2020-11-08 18:05:53

标签: python pandas dataframe

我有两个下面的数据框df1df2

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

有什么办法可以做到这一点吗?我不想循环,因为我有巨大的数据框,这可能会降低代码的性能。

1 个答案:

答案 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