Python - 基于行值的乘法

tha*_*eow 2 python conditional pandas

我有一个数据框和三个变量x,y,z.

x = 10, y = 20, z = 30

df = pd.DataFrame({'A':['a','b','c'],
                   'B':[6,7,8]})
Run Code Online (Sandbox Code Playgroud)

这是我想要做的:

创建一个新列'C':

If df['A'] == 'a', df['C'] = df['B']*x
If df['A'] == 'b', df['C'] = df['B']*y
If df['A'] == 'c', df['C'] = df['B']*z
Run Code Online (Sandbox Code Playgroud)

有什么快速的方法吗?

roo*_*oot 5

创建将列A值映射到乘法值的字典,然后map在列A上使用并将其与列B相乘:

mul_map = {'a': 10, 'b': 20, 'c': 30}
df['C'] = df['B'] * df['A'].map(mul_map)
Run Code Online (Sandbox Code Playgroud)

结果输出:

   A  B    C
0  a  6   60
1  b  7  140
2  c  8  240
Run Code Online (Sandbox Code Playgroud)