我尝试对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似乎用于数据帧间操作,而不仅用于一列。
答案 0 :(得分:2)
您可以汇总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