我尝试对A和B相同的每一行减去C列中的所有值。

我有:

 A          B          C
Car        Wheel      4
Car        Wheel      2
Plane      Motor      -10
Plane      Motor      -5
Plane      Wheel      12


我需要:

 A          B          C
Car        Wheel    4-2 = 2
Plane      Motor   -10-(-5) = -5
Plane      Wheel      12


我实际上与df.groupby(['A','B'])。sum()类似,但问题是我没有找到等效的减法... pd.sub似乎用于数据帧间操作,而不仅限于一列。

最佳答案

您可以汇总sum,仅汇总-1的多个重复值,因此输出为汇总减法:

print (df.assign(C = np.where(df.duplicated(['A','B']), -1, 1) * df.C))
       A      B   C
0    Car  Wheel   4
1    Car  Wheel  -2
2  Plane  Motor -10
3  Plane  Motor   5
4  Plane  Wheel  12

df1 = (df.assign(C = np.where(df.duplicated(['A','B']), -1, 1) * df.C)
         .groupby(['A','B'], as_index=False)['C'].sum())
print (df1)
       A      B   C
0    Car  Wheel   2
1  Plane  Motor  -5
2  Plane  Wheel  12

关于python - 减去值取决于 Pandas 上的多个关键列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59464023/

10-09 17:10