python - 熊猫数据框中的逐行替换操作
问题描述
在给定的数据框中,我正在尝试执行逐行替换操作,其中 1 应替换为 Values 中的值。
输入:
import pandas as pd
df = pd.DataFrame({'ID': [1,1,1,2,3,3,4,5,6,7],
'A': [0,1,0,1,0,0,1,0,np.nan,0],
'B': [0,0,0,0,1,1,0,0,0,0],
'C': [1,0,1,0,0,0,0,0,1,1],
'Values': [10, 2, 3,4,9,3,4,5,2,3]})
预期输出:
ID A B C Values
0 1 0.0 0 10 10
1 1 2.0 0 0 2
2 1 0.0 0 3 3
3 2 4.0 0 0 4
4 3 0.0 9 0 9
5 3 0.0 3 0 3
6 4 4.0 0 0 4
7 5 0.0 0 0 5
8 6 NaN 0 2 2
9 7 0.0 0 3 3
**注:数据非常庞大。
解决方案
利用df.where
df[['A','B','C']]=df[['A','B','C']].where(df[['A','B','C']].ne(1),df['Values'], axis=0)
ID A B C Values
0 1 0.0 0 10 10
1 1 2.0 0 0 2
2 1 0.0 0 3 3
3 2 4.0 0 0 4
4 3 0.0 9 0 9
5 3 0.0 3 0 3
6 4 4.0 0 0 4
7 5 0.0 0 0 5
8 6 NaN 0 2 2
9 7 0.0 0 3 3
或者
df[['A','B','C']]=df[['A','B','C']].mask(df[['A','B','C']].eq(1),df['Values'], axis=0)
推荐阅读
- iot - SIM7020E 响应 AT+COPS=? 有错误
- c# - 如何使 redis 缓存在 IIS Express 上部署的 asp.net core web 上工作,但在 localhost 上工作
- apache-spark - 对于 jdbc,为什么 spark 比 sqoop 慢?
- javascript - 如果用户通过 Weather Api 搜索输入错误的城市名称,如何使用 try and catch?
- flutter - 如何让PageView的每一页都成为一个URL,以便在谷歌上链接、分享和索引?
- android - 如何在手机导航屏幕上放大字体大小?
- javascript - IBM Informix NodeJS 设置问题 - INFORMIXSERVER 值未列在 sqlhosts 文件或注册表中
- html - 从站点 A 向站点 B 发布表单时,POST 请求是否包含站点 B 的 cookie?
- java - 我无法在java中设置-Xmx
- javascript - JavaScript中从字符串和数字的组合到日期格式的意外转换