df = pd.DataFrame({'c1':['Ax','Ay','Bx','By'], 'c2':['Ay','Ax','By','Bx'], 'c3':[1,2,3,4]})
c1 c2 c3
0 Ax Ay 1
1 Ay Ax 2
2 Bx By 3
3 By Bx 4
I'd like to sum the c3
values by aggregating the same xy
combinations from the c1
and c2
columns.
The expected output is
c1 c2 c3
0 x y 4 #[Ax Ay] [Bx By]
1 y x 6 #[Ay Ax] [By Bx]
CodePudding user response:
You can select values in c1
and c2
without first letters and aggregate sum
:
df = df.groupby([df.c1.str[1:], df.c2.str[1:]]).sum().reset_index()
print (df)
c1 c2 c3
0 x y 4
1 y x 6