Bei der Pandas-Groupby-Verarbeitung unter Verwendung von ".agg ()" zur Berechnung mehrerer Statistiken wie "[max, min]" ist der zurückgegebene Datenrahmen mehrspaltig. Ich werde vorstellen, wie Sie diese Mehrspalte einfach in eine einzelne Spalte konvertieren können.
Erstellen Sie einen 5-mal-2-Datenrahmen, der nur aus 0 und 1 als Beispiel besteht.
input}
import numpy as np
import pandas as pd
mat = np.random.rand(5, 2)
mat[mat > 0.5] = 1
mat[mat <= 0.5] = 0
df = pd.DataFrame(mat, columns=['A', 'B'])
output}
A B
0 0.0 1.0
1 1.0 0.0
2 0.0 1.0
3 0.0 1.0
4 0.0 0.0
Wenn Sie "[min, max]" mit ".agg ()" angeben, ist dies mehrspaltig.
input}
df.groupby('A').agg({'B': [min, max]}).columns
output}
MultiIndex([('B', 'min'),
('B', 'max')],
)
Bereiten Sie Variablen (level1, level2
im folgenden Beispiel) wie bei der Behandlung von zip
in der for-Anweisung vor und kombinieren Sie sie mit fstring als Zeichenfolge.
input}
[f'{level1}__{level2}' for level1, level2 in df.groupby('A').agg({'B': [min, max]}).columns]
output}
['B__min', 'B__max']
Recommended Posts