【问题标题】:Python Pandas - Replace NaN values using dictPython Pandas - 使用 dict 替换 NaN 值
【发布时间】:2020-06-09 16:10:25
【问题描述】:

使用以下 DF:

     A  B
0    a  1
1    b  2
2  NaN  1
3  NaN  2

我想根据B的数值表示替换A的NaN值,得到:

     A  B
0    a  1
1    b  2
2    a  1
3    b  2

我已经建立了一个 B/A 值字典:{1 : 'a', 2: 'b'}

如何将更改应用到 NaN 值?

【问题讨论】:

  • nevemind,添加以回答在此处使用 mapreplace 之间的差异,如果 dict 中的所有值都与 B 中的值相同,则输出相同(在实际数据中执行最佳测试)。

标签: python pandas


【解决方案1】:

Series.fillnaSeries.map 一起使用:

d = {1 : 'a', 2: 'b'}
df.A = df.A.fillna(df.B.map(d))
print (df)
   A  B
0  a  1
1  b  2
2  a  1
3  b  2

我建议使用map,因为replaceslowier,如果map 中没有匹配项,则返回缺失值(如原始值)而不是B 的值:

df["A"] = df["A"].fillna(df["B"].replace({1 : 'a', 2: 'b'}))
print (df)
   A  B
0  a  1
1  b  2
2  a  1
3  3  3 <- changed last value to 3

d = {1 : 'a', 2: 'b'}
df.A = df.A.fillna(df.B.map(d))
print (df)
     A  B
0    a  1
1    b  2
2    a  1
3  NaN  3

【讨论】:

猜你喜欢
  • 2017-08-01
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 2018-11-14
  • 2021-03-08
  • 2022-07-06
  • 2017-12-20
  • 2017-07-04
相关资源
最近更新 更多