python - 如果 pandas 列 [x] 中的变量,则乘以 pandas 列 [y] 的值
问题描述
我试图编写一个脚本,如果特定值存在于另一列的相应行中,它将乘以熊猫行中的值。
我正在使用 for 循环和“if in”语句,但它根本没有识别出变量存在于第一列中,更不用说应用乘法了。
这是一些示例代码:
import pandas as pd
data = {'Person': ['Jim', 'Jim', 'Jim', 'Jim', 'Jim', 'Bob','Bob','Bob','Bob','Bob',],
'Result': ['Good', 'Good','Good','Good','Good','Good','Bad','Good','Bad','Bad',],
'Value':[1,2,3,1,2,3,1,2,1,4]}
df = pd.DataFrame.from_dict(data)
for i in df['Result']:
if 'Bad' in df['Result']:
print(i)
df['Value'] * 2
目前的结果是:
Person Result Value
0 Jim Good 1
1 Jim Good 2
2 Jim Good 3
3 Jim Good 1
4 Jim Good 2
5 Bob Good 3
6 Bob Bad 1
7 Bob Good 2
8 Bob Bad 1
9 Bob Bad 4
我想要实现的是:
Person Result Value
0 Jim Good 1
1 Jim Good 2
2 Jim Good 3
3 Jim Good 1
4 Jim Good 2
5 Bob Good 3
6 Bob Bad 2
7 Bob Good 2
8 Bob Bad 2
9 Bob Bad 8
解决方案
使用loc
权限:
df.loc[df['Result']=='Bad', 'Value'] *= 2
推荐阅读
- java - JNI 接口中应该抛出通用异常还是专用异常?
- vba - 如何在 Excel 中将数据从一个表分配到另一个表?
- css - 可调整大小的 div - 允许用户抓取 div 的任何边缘以调整大小并同时调整所有 div 的大小
- r - 通过 R 中的值有条件地更改 DT 字体颜色
- angular - Rxjs过滤分割字符串可观察到分隔符
- php - 将数据库数据与 html 表进行比较,并在 Laravel 8 中使用 AJAX 刷新更改
- react-native - Mobx 商店不会触发 react-native 项目的重新渲染
- node.js - 使用 SSR 时无法在 vue3 中使用异步组件
- html - 谷歌字体不显示
- python - 写入包含 \n 换行符的 CSV 数据