首页 > 解决方案 > 如果 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

标签: pythonpandasdataframefor-loopif-statement

解决方案


使用loc权限:

df.loc[df['Result']=='Bad', 'Value'] *= 2

推荐阅读