python - Pandas:如果不是最大值,则替换为 0 的列
问题描述
我想要做的是用“0”替换列值,如果对于给定的行,该列不是最大的。相反,如果对于给定的行,该列是最大的,则将列值替换为“1”。
我的数据如下所示:
data = {
"A": [1, 2, 3],
"B": [3, 5, 1],
"Max": ["B", "B", "A"]
}
data_df = pd.DataFrame(data)
print(data_df)
A B Max
0 1 3 B
1 2 5 B
2 3 1 A
但我希望它看起来像
A B Max
0 0 1 B
1 0 1 B
2 1 0 A
解决方案
你可以做:
for col in ['A','B']:
data_df[col] = data_df['Max'].eq(col).astype(int)
或者,您可以这样做:
data_df[['A', 'B']] = (pd.get_dummies(data_df['Max'])
.reindex(['A','B'], axis=1, fill_value=0)
)
推荐阅读
- mysql - MySQL 无法第二次登录并出现错误消息:用户'root'@'localhost' 的访问被拒绝(使用密码:是)
- vue.js - Parcel 尝试从 npm 安装自定义 vue 组件
- php - PHP:是否可以保存网站,模拟手动保存?
- python - 在“from_delayed”JSON 文件中发现 DASK 元数据不匹配
- video - ffmpeg 删除 mp4 文件中的一部分音频,但不是全部
- python - 桥接关系表的 Sqlalchemy 事件
- sass - 仅输出使用某些变量的样式?
- c# - 如何基于实体框架代码优先模型自动生成.mdf db如果不存在
- php - 是否有可能获得函数的静态值?
- javascript - firebase.database() 不是函数