Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird


guter Name

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:

Die Daten stammen aus der Chess Database

mozway

Einfach groupbyauf der level=0fü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 groupbyTrog a stack/ unstack:

df.stack().groupby(level=[0,1]).min().unstack()

Ausgang:

   A  B
A  2  2
B  1  1

Verwandte Artikel


Python CSV zwei Spalten mit demselben Namen

Teebagz Gibt es eine Möglichkeit, das Python-CSV-Modul zu verwenden, um eine CSV-Datei mit zwei gleichnamigen Spalten zu speichern? Das ist meine Funktion def DictListToCsv(Data, FileName, FieldNames): with open(FileName, 'w') as f: writer = csv.Di