python - 更新 Pandas Dataframe 列 A 中的所有值,仅当 B 中的值不为零时才使用列 B 的值
问题描述
我之前的代码用 A 中的值更新 B 中的所有值,其中 B 为零
dft = pd.DataFrame(
np.array([
['Unknown', 0], ['Unknown', 'CORP'], ['Unknown', 'GOVT'], ['Unknown', 0]
]), columns=['A', 'B']
)
print(dft)
mask = dft['B'] == '0'
dft.loc[mask, 'B'] = dft['A']
A B
0 Unknown 0
1 Unknown CORP
2 Unknown GOVT
3 Unknown 0
A B
0 Unknown Unknown
1 Unknown CORP
2 Unknown GOVT
3 Unknown Unknown
但我想用 B 中非零的所有值进行逆运算并更新 A。我可以用 B 更新整个 A 但我想保留 A 中的现有值,因为用零替换没有帮助
期望的结果:
A B
0 Unknown 0
1 CORP CORP
2 GOVT GOVT
3 Unknown 0
解决方案
使用DataFrame.where
. 要替换列:
dft = dft.where(dft['B'] == '0', dft.B, axis=0)
print (dft)
A B
0 Unknown 0
1 CORP CORP
2 GOVT GOVT
3 Unknown 0
但是,仅替换列A
:
dft['A'] = dft['A'].where(dft['B'] == '0', dft.B)
#dft.loc[dft['B'] !='0','A'] = dft['B']
print (dft)
A B
0 Unknown 0
1 CORP CORP
2 GOVT GOVT
3 Unknown 0
推荐阅读
- pandas - 使用 jupyter Notebook 进行 Facebook Messenger 分析
- python - Pandas:AWS S3 存储桶中的“read_csv”函数有时会返回“FileNotFoundError”
- css - Safari 错误 - 不遵守固定高度表格单元格内 100% 的 textarea 高度
- python - 为什么在 PCRaster 中写入输出时间文件时出现断言错误:“我的绝对路径”?
- c# - 统一从游戏对象访问组件
- vba - VBA CBC 256 和 Java Bouncy castle 加密
- r - 汇总数据问题
- swift - 如何在非沙盒应用程序的应用程序内部/内部保存文件?
- curl - curl: (1) libcurl 中不支持或禁用协议“sftp”
- amazon-web-services - AWS BucketPolicy 未能创建 - 无效的策略语法 MalformedPolicy