Wie man einen 'groupby' nach Multilevel-Index in Pandas macht

8

Ich habe einen Datenrahmen 'RPT', indiziert durch (STK_ID, RPT_Date), enthält die kumulierten Verkäufe von Aktien für jeden Querter:

%Vor%

Ich möchte die einzelnen Verkäufe mit "groupby" von STK_ID & amp; RPT_Yr, wie zum Beispiel: RPT.groupby('STK_ID','RPT_Yr')['sales'].transform(lambda x: x-x.shift(1)) , wie geht das?

Angenommen, ich kann das Jahr von lambda x : datetime.strptime(x, '%Y%m%d').year

bekommen     
bigbug 30.08.2012, 06:00
quelle

2 Antworten

8

Angenommen, hier ist RPT_Data ein String, warum sollte man Datetime nicht benutzen?

Es ist möglich, Gruppen mithilfe von Funktionen zu gruppieren, jedoch nur in einem Nicht-MultiIndex-Index. Umgehen Sie dies, indem Sie den Index zurücksetzen, und setzen Sie 'RPT_Date' als Index, um das Jahr zu extrahieren (Hinweis: Pandas wechselt zwischen Objekt und Int als dtype für 'RPT_Date').

%Vor%

Andere Option ist die Verwendung einer Tmp-Spalte

%Vor%

BEARBEITEN Reorganisieren Sie Ihren Rahmen viel einfacher.

%Vor%     
Wouter Overmeire 30.08.2012, 07:51
quelle
0

Versuchen Sie

%Vor%

^^ Sie müssen auf die Indizes innerhalb einer Liste verweisen. das hat bei mir funktioniert.

    
Jonathan 26.09.2017 20:25
quelle

Tags und Links