首页 > 解决方案 > 如何根据条件替换熊猫数据框中的值?

问题描述

我尝试根据包含条件的“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

标签: pythonpandas

解决方案


你的代码给出了正确的结果,但如果你想要一个直接的方法

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

推荐阅读