我尝试对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/