如何在将值求和时将DateTime分为Year和Month?

时间:2019-03-28 08:32:47

标签: python pandas datetime dataframe

我有一个数据框,其中有一个Date列作为DateTime类型的索引,并在每个条目上附加了一个值。

日期分为yyyy-mm-dd,每一行都是第二天。

示例:

Date:          x:
2012-01-01     44
2012-01-02     75
2012-01-03     62

我如何将“日期”列分为“年”和“月”列,并用这两个列作为索引,同时还要对一个月中所有天的值求和?

预期输出示例:

Year:     Month:     x:
2012      1          745
          2          402
          3          453
...
2013      1          4353

2 个答案:

答案 0 :(得分:3)

使用Series.dt.year Series.dt.month,其中GroupBy.sumsum分别是renamedf['Date'] = pd.to_datetime(df['Date']) df1 = df.groupby([df['Date'].dt.year.rename('Year'), df['Date'].dt.month.rename('Month')])['x'].sum().reset_index() print (df1) Year Month x 0 2012 1 181 的总列名:

Colours

答案 1 :(得分:1)

使用groupbysum

(df.groupby([df.Date.dt.year.rename('Year'), df.Date.dt.month.rename('Month')])['x']
   .sum())

Year  Month
2012  1        181
Name: x, dtype: int64

请注意,如果“日期”不是日期时间dtype列,请使用

df.Date = pd.to_datetime(df.Date, errors='coerce')

要先进行转换。


(df.groupby([df.Date.dt.year.rename('Year'), df.Date.dt.month.rename('Month')])['x']
   .sum()
   .reset_index())

   Year  Month    x
0  2012      1  181