python - 如何根据在两个不同列上设置的某些条件填充 pandas 数据框中的列?
问题描述
假设我有一个如下的df:
A B C
null 0 null
null 4 null
5 6 null
0 0 0
现在,我想根据 A 列和 B 列的条件填充我的 C 列:仅当 A 列中的空值与 B 列的“0”相对应时,才让 C 列为空,否则在所有其他情况下将 B 列复制到C列。这意味着我希望我的df看起来像这样:
A B C
null 0 null
null 4 4
5 6 6
0 0 0
我怎样才能在熊猫中实现这一点?任何帮助都将不胜感激,因为我在 python 和 pandas 编程方面相当陌生。
解决方案
df['C']=df['C'].fillna(df['B'].mask(df['B'].eq(0)))
print(df)
A B C
0 NaN 0 NaN
1 NaN 4 4.0
2 5.0 6 6.0
3 0.0 0 0.0
或使用Series.where
:
df['C']=df['B'].mask(df['B'].eq(0)).where(df['C'].isnull(),df['C'])
print(df)
A B C
0 NaN 0 NaN
1 NaN 4 4.0
2 5.0 6 6.0
3 0.0 0 0.0
推荐阅读
- reactjs - 如何新建 reactjs 和 react-native 项目并整理源码仓库?
- api - 如何在 Kotlin 的 forEach 循环中使用协程?
- javascript - 一次通话向所有订阅者发送网络推送通知
- c# - 使用 Vue JS 和 .Net Core Web API 之类的堆栈 - 我在哪里实现身份验证 (Azure AD)?
- arrays - 从 JSON 响应中的逗号分隔字符串中获取数据,并根据 IONIC 3 中的值禁用或启用按钮
- python-3.x - 如何使用菜单中没有“文件->退出”的pywinauto关闭窗口?
- javascript - 如何为 Webpack 4 中的每个输出导出 contenthash 值?
- clang - Xcode 11 ld 错误“您的二进制文件不是 /usr/lib/libcrypto.dylib 的允许客户端”
- javascript - 匹配一半在标签内一半在外面的字符串
- javascript - *ngFor 在获取新数据之前正在更新