ich bekomme etwas bei Pandas nicht hin bzw verstehe nicht, wie ich das anstellen soll.
Ich habe einen DateFrame (imporiert aus einer Excel-Datei aus einem ERP System, der u.a. Spalten für Produktgruppe, Umsatz und Datum hat. Die Daten sind zeilenbasiert, es kann mehrere Zeilen pro Produktgruppe und Datum geben.
Die Daten möchte ich pivotieren. Was auch keine Problem ist, wenn ich die Produktgruppe als Index, den Umsatz als `values`, die Aggregierung mit `sum` mache und als `columns` Monat und Jahr (aus dem Datum abgeleitet) nehme.
Jetzt sollen die Spalten aber nicht Jahr / Monats Intervalle sein, sondern ein etwas schräges Interval vom Samstag nach dem letzten Freitag des Vormonats bis zum letzten Freitag des aktuellen Monats sein. Das Berechnen der Intervalle ist kein Problem:
Code: Alles auswählen
def calc_periods(start_date, last_date):
date_range = pd.date_range(start_date, last_date, freq='M')
periods = date_range.where(date_range.weekday == 4, date_range - pd.offsets.Week(weekday=4))
return periodsDamit bekomme ich einen passenden DatetimeIndex. Soweit, so gut. Nur: ich habe keinen Plan, wie ich dem `columns` Argument von `pd.pivot_table` mitgebe, dass das die Datumsspalte des DataFrames für die Pivot Tabelle nach dem DatetimeIndex gruppiert wird. `columns` kann ein pd.Grouper Objekt als Argument bekommen - aber ich habe keine Ahnung, was ich pd.Grouper() als Argumente mitgeben muss, um das passende Grouper-Objekt zu bekommen.
Gruß, noisefloor
