Как я могу сгруппировать по годам из поля даты, используя Python / Pandas - PullRequest
1 голос
/ 22 марта 2020

Я хочу сгруппировать Return_On_Capital по дата данных и Название компании

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

Ответы [ 2 ]

1 голос
/ 22 марта 2020

Это может сработать -

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 голос
/ 22 марта 2020

Создайте список в groupby и добавьте столбец Company name для группировки по year s по Series.dt.year и компаниям, но сначала преобразуйте строки в даты по 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
...