Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird
Ich habe eine große Matrix, etwa so:
df:
A A A B B ... (column names)
A 2 4 5 9 2
A 6 8 7 6 4
A 5 2 6 4 5
B 3 4 1 3 4
B 4 5 3 1 4
.
.
(row names)
Ich möchte die Spalten mit demselben Namen zusammenführen und den Mindestwert finden. Am Ende hätte ich gerne eine Matrix wie diese:
df_min:
A B ... (column names)
A 2 2
A 6 4
A 2 4
B 1 3
B 3 1
.
.
(row names)
Meine Absicht danach (außerhalb der Frage) ist es, die Zeilen auch zusammenzuführen. Gewünschtes Ergebnis:
df_min:
A B ... (column names)
A 2 2
B 1 1
.
.
(row names)
Ich habe das versucht:
df_min= df.groupby('df.columns, axis=1').agg(np.min)
Aber es hat nicht funktioniert, es hat einige Zeilen entfernt (z. B. Zeile A vollständig entfernt) ... BEARBEITEN : Anscheinend hat es gut funktioniert, aber ich hatte zwei Spalten mit unterschiedlichen Namen, aber Leerzeichen am Ende des Namens. Diese Methoden ordnen die Spalten neu an, was mich verwirrt hat.
Ein Ausschnitt des Datenrahmens:
Einfach groupby
auf der level=0
für jede Achse:
df.groupby(level=0, axis=1).min()
Ausgang:
A B
A 2 2
A 6 4
A 2 4
B 1 3
B 3 1
beide Achsen:
df.groupby(level=0, axis=1).min().groupby(level=0).min()
Ausgang:
A B
A 2 2
B 1 1
Verwenden Sie alternativ ein einzelnes groupby
Trog a stack
/ unstack
:
df.stack().groupby(level=[0,1]).min().unstack()
Ausgang:
A B
A 2 2
B 1 1