[FIXED] Gruppieren nach Summe mehrerer Spalten in Pandas (Ignorieren von Duplikaten)

Ausgabe

Ich habe den folgenden Code, in dem mein Datenrahmen 3 Spalten enthält

  toBeSummed toBeSummed2 toBesummed3  someColumn
0          X           X           Y         NaN
1          X           Y           Z         NaN
2          Y           Y           Z         NaN
3          Z           Z           Z         NaN
oneframe = pd.concat([df['toBeSummed'],df['toBeSummed2'],df['toBesummed3']], axis=1).reset_index()


temp = oneframe.groupby(['toBeSummed']).size().reset_index()
temp2 = oneframe.groupby(['toBeSummed2']).size().reset_index()
temp3 = oneframe.groupby(['toBeSummed3']).size().reset_index()
temp.columns.values[0] = "SameName"
temp2.columns.values[0] = "SameName"
temp3.columns.values[0]  = "SameName"

final = pd.concat([temp,temp2,temp3]).groupby(['SameName']).sum().reset_index()
final.columns.values[0] = "Letter"
final.columns.values[1] = "Sum"

Das Problem hier ist, dass mit dem Code, den ich habe, alle Instanzen jedes Werts zusammengefasst werden. Das bedeutet, dass das Aufrufen von final dazu führen würde

  Letter  Sum
0      X    3
1      Y    4
2      Z    5

Ich möchte jedoch, dass es nicht mehr als einmal zählt, wenn derselbe Wert in der Zeile vorhanden ist (dh in der ersten Zeile gibt es zwei X, sodass nur das eine X gezählt wird). Das heißt, die gewünschte Ausgabe ist

  Letter  Sum
0      X    2
1      Y    3
2      Z    3

Ich kann weitere Kommentare aktualisieren oder hinzufügen, wenn dies verwirrend ist.

Lösung

Gegeben df:

  toBeSummed toBeSummed2 toBesummed3  someColumn
0          X           X           Y         NaN
1          X           Y           Z         NaN
2          Y           Y           Z         NaN
3          Z           Z           Z         NaN

Tun:

sum_cols = ['toBeSummed', 'toBeSummed2', 'toBesummed3']

out = df[sum_cols].apply(lambda x: x.unique()).explode().value_counts()
print(out.to_frame('Sum'))

Ausgabe:

   Sum
Y    3
Z    3
X    2


Beantwortet von –
BeRT2me


Antwort geprüft von –
Robin (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like