[FIXED] Pandas Group transponiert einzelne Spalten und Zeilen in Python

Ausgabe

Ich versuche, einen Pandas-Datenrahmen zu gruppieren und eine einzelne Spalte und eine einzelne Zeile (?) zu transponieren. Siehe Beispielbild unten. Ich habe versucht, die Funktion GroupBy und Pivot zu verwenden. Irgendwelche Ideen? 🙂

Beispiel einer gruppierten Tabelle

import pandas as pd

name = 'Name'
account = 'Account'
price = 'Price'
date = 'Date'
month = 'Month'

dictionary = {
  name: 
      ['aaa','aaa','bbb','bbb','bbb','ccc','ccc','ccc'],
  account: 
      [22, 33, 22, 22, 33, 12, 12, 10],
  price: 
      [100, 345, 345, 667, 1_033, 234, 10, 12],
  date: 
      ['01-05-2022', '02-06-2022', '04-04-2022', '23-01-2022', '01-05-2022', '02-02-2022', '04-02-2022', '23-01-2022']
}

df = pd.DataFrame(data=dictionary)

df[date] = pd.to_datetime(df[date], format='%d-%m-%Y')
df[month] = pd.DatetimeIndex(df[date]).month

group = df.groupby([month, name]).agg({price:['count', 'sum']})

group.transpose()

Lösung

Das könnte fĂŒr Sie funktionieren:

dfo = (pd.pivot_table(df, index='Name', columns='Month', values='Price', aggfunc=['sum','count'])
           .stack(level=0).fillna(0).astype(int))
print(dfo)

Ergebnis

Month         1    2    4     5    6
Name                                
aaa  count    0    0    0     1    1
     sum      0    0    0   100  345
bbb  count    1    0    1     1    0
     sum    667    0  345  1033    0
ccc  count    1    2    0     0    0
     sum     12  244    0     0    0

Überschriften in derselben Zeile

dfo = (pd.pivot_table(df, index='Name', columns='Month', values='Price', aggfunc=['sum','count'])
           .stack(level=0).fillna(0).astype(int)
           .rename_axis(('Name','Month'), axis=0)
           .rename_axis(None, axis=1).reset_index())
print(dfo)

Gleiches Zeilenkopfergebnis

  Name  Month    1    2    4     5    6
0  aaa  count    0    0    0     1    1
1  aaa    sum    0    0    0   100  345
2  bbb  count    1    0    1     1    0
3  bbb    sum  667    0  345  1033    0
4  ccc  count    1    2    0     0    0
5  ccc    sum   12  244    0     0    0


Beantwortet von –
jch


Antwort geprĂŒft von –
Senaida (FixError Volunteer)

0 Shares:
Leave a Reply

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

You May Also Like