python - 如何根据条件替换熊猫数据框中的值?
问题描述
我尝试根据包含条件的“C”列将不同的公式应用于新列“结果”。如果 C 是“加”,那么我想加 X 和 Y。当 C 是“多”时,结果应该是 X * Y。
df = pd.DataFrame({'X': [0, 1, 2, 3, 4],
'Y': [5, 6, 7, 8, 9],
'C': ['add', 'add', 'mult', 'mult', 'mult']})
df['result'] = df['X'] * df['Y']
df.loc[df.C =='add', 'result'] = df.loc[df['C'] =='add', 'X'] \
+ df.loc[df['C'] =='add', 'Y']
df
我得到的结果是:
C X Y result
0 add 0 5 5
1 add 1 6 5
2 mult 2 7 14
3 mult 3 8 24
4 mult 4 9 36
我需要的是第 1 行的“结果”为 7
C X Y result
0 add 0 5 5
1 add 1 6 7
2 mult 2 7 14
3 mult 3 8 24
4 mult 4 9 36
解决方案
你的代码给出了正确的结果,但如果你想要一个直接的方法
df['result'] = df.apply(lambda x : x['X']+x['Y'] if x['C'] == 'add' else x['X']*x['Y'], axis=1 )
输出 :
X Y C result
0 0 5 add 5
1 1 6 add 7
2 2 7 mult 14
3 3 8 mult 24
4 4 9 mult 36
推荐阅读
- javascript - 下一个 JS 请求一个不存在的 JSON 文件
- python - `>` 运算符在 python 中的作用是什么?
- android - Hilt Android 中的多网络模块
- python - 熊猫数据框日期时间排序返回错误的时间值
- snowflake-cloud-data-platform - 将默认值分配给 TIMESTAMP_NTZ 雪花
- spring-boot - 如何在外部化 jpa 本机查询中指定命名参数
- python - 遍历每个 XML 文件
- android - android概览按钮/最近按钮/最近列表/多个应用列表,显示活动屏幕黑色/空白/清除
- html - Angular Material 类 mat-app-background 与 position:fixed
- javascript - 倒计时后如何使弹出窗口保持不变?