使用pandas,如何在一个索引列中按季度和年份对日期时间进行分组?
我可以通过以下方式对日期进行分组:df.groupby(by=[df.index.year, df.index.quarter])
。但是,由于它创建了两列,因此在尝试创建时间序列图时出现错误,我无法弄清楚如何解决此问题。
以下是一个例子:
df0 = pd.DataFrame({'date':['2016-1-1', '2016-4-1', '2016-7-1', '2016-10-1', '2017-1-1', '2017-4-1', '2017-7-1', '2017-10-1'],
'value':[32141,1234,2134,2134,1234,2134,213,1234]})
df0['date'] = pd.to_datetime(df0['date'], format="%Y-%m-%d")
df0.index = df0['date']
df0 = df0.groupby(by=[df0.index.year, df0.index.quarter]).sum()
df0
答案 0 :(得分:1)
我在这里猜测,但也许您正在寻找应用transform()
来保留行。试试这个例子:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.DataFrame({
'dates':pd.date_range(start='2018-01-01', end='2018-12-31'),
'i': np.arange(365)
}).set_index('dates')
df.groupby(by=[df.index.year, df.index.quarter]).mean().plot(kind='bar')
df.groupby(by=[df.index.year, df.index.quarter]).transform('mean').plot()
返回: