【问题标题】:How can I Group By Year from a Date field using Python/Pandas如何使用 Python/Pandas 从日期字段中按年份分组
【发布时间】:2020-07-02 21:25:40
【问题描述】:

我想按数据日期公司名称

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

【问题讨论】:

    标签: python-3.x pandas group-by


    【解决方案1】:

    这可能有效 -

    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()
    

    【讨论】:

      【解决方案2】:

      groupby 中创建列表并添加Company name 列以按years 按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
      

      【讨论】:

      • 我收到以下错误响应 AttributeError: Can only use .dt accessor with datetimelike values
      猜你喜欢
      • 2017-12-08
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多