我有一个数据框,其中有一个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
答案 0 :(得分:3)
使用Series.dt.year
Series.dt.month
,其中GroupBy.sum
和sum
分别是rename
和df['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)
使用groupby
和sum
:
(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