首页 > 解决方案 > 如果 Col B 不为空,则替换 Col A 中的观察值,Python

问题描述

我有一个像这样的熊猫数据框:

      Name      Preferred Name
0     Tyler     None
1     Rachel    None
2     Jason     None
3     Jack      John
4     Peter     None

如果有可用的首选名称,我想用首选名称字段覆盖名称字段中的观察,以获得:

      Name      Preferred Name
0     Tyler     None
1     Rachel    None
2     Jason     None
3     John      John
4     Peter     None

实现这一目标的最佳方法是什么?

我试图从 Name:Preferred Name 创建一个字典,然后使用字典覆盖,但在这种情况下它会带来所有空白值。有没有办法将其仅应用于填充首选名称的那些行?

谢谢

标签: pythonpandas

解决方案


您可以使用布尔索引notna

df.loc[df.PreferredName.notna(), 'Name'] = df.PreferredName

print(df)

     Name PreferredName
0   Tyler           NaN
1  Rachel           NaN
2   Jason           NaN
3    John          John
4   Peter           NaN

推荐阅读