Chcę pogrupować Return_On_Capital według datadate i nazwy firmy
Compustat.groupby(Compustat['datadate'].dt.strftime('%Y'))['Return_On_Capital'].sum().sort_values()
datadate Company name asset Debt_Curr_Liabilities Return_On_Capital
31/01/2007 AAR CORP 1067.633 74.245 -0.143515185
31/01/2011 AAR CORP 913.985 1703.727 -0.125509652
31/01/2011 AAR CORP 954.1 69 0.009514327
31/01/2007 ADC 1008.2 200.6 -0.097757499
30/01/2006 ADC 1107.7 1474.5 -0.091422466
31/01/2010 ALPHARMA 692.991 34.907 -0.053860375
31/01/2006 ALF 353.541 927.239 -0.131694528
1
Chukypedro
22 marzec 2020, 08:30
2 odpowiedzi
Najlepsza odpowiedź
Utwórz listę w groupby
i dodaj kolumnę Company name
do grupowania według year
s według Series.dt.year
i firmy, ale najpierw konwertuj ciągi na czasy danych przez to_datetime
:
Compustat['datadate'] = pd.to_datetime(Compustat['datadate'], dayfirst=True)
df = (Compustat.groupby([Compustat['datadate'].dt.year,'Company name'])['Return_On_Capital']
.sum()
.sort_values()
.reset_index())
print (df)
datadate Company name Return_On_Capital
0 2007 AAR CORP -0.143515
1 2006 ALF -0.131695
2 2011 AAR CORP -0.115995
3 2007 ADC -0.097757
4 2006 ADC -0.091422
5 2010 ALPHARMA -0.053860
1
jezrael
22 marzec 2020, 05:54
To może zadziałać -
Compustat['datadate'] = pd.to_datetime(Compustat['datadate'], format='%d/%m/%Y')
Compustat.groupby([Compustat['datedate'].dt.year, 'Company name']).agg(sum=('Return_On_Capital', 'sum')).sort_values()
1
Sajan
22 marzec 2020, 06:32
Podobne pytania
Nowe pytania
python-3.x
W przypadku pytań dotyczących programowania w języku Python, które są specyficzne dla wersji 3+ tego języka. Użyj bardziej ogólnego tagu [python] we wszystkich pytaniach Pythona i dodaj ten tylko, jeśli twoje pytanie dotyczy wersji. Użyj znaczników [python-2.x] w pytaniach o Python 2.