Python 在时间序列中使用groupby时,如何切换年份以显示在列中

Python 在时间序列中使用groupby时,如何切换年份以显示在列中,python,pandas,Python,Pandas,我有一个类似这样的时间序列 fechas= pd.Series(pd.date_range(start='2015-01-01', end='2020-12-01', freq='H')) data=pd.Series(range(len(fechas))) df=pd.DataFrame({'Date':fechas, 'Data':data}) 我需要做的是一年一天一组的总和,我所做的和工作是 df['year']=pd.DatetimeIndex(df['Date']).year df[

我有一个类似这样的时间序列

fechas= pd.Series(pd.date_range(start='2015-01-01', end='2020-12-01', freq='H'))
data=pd.Series(range(len(fechas)))
df=pd.DataFrame({'Date':fechas, 'Data':data})
我需要做的是一年一天一组的总和,我所做的和工作是

df['year']=pd.DatetimeIndex(df['Date']).year
df['month']=pd.DatetimeIndex(df['Date']).month
df['day']=pd.DatetimeIndex(df['Date']).day
df.groupby(['year','month','day'])['Data'].sum().reset_index()
但我需要的是在专栏里写上这些年,让它们看起来像这样

res=pd.DataFrame(columns=['dd-mm','2015','2016','2017','2018','2019','2020']

这可能是您需要的:

df = pd.DataFrame({'Date':fechas, 'Data':data})
df = df.groupby(pd.DatetimeIndex(df["Date"]).date).sum()
df.index = pd.to_datetime(df.index)
df["dd-mm"] = df.index.strftime("%d-%m")
output = pd.DataFrame(index=df["dd-mm"].unique())
for yr in range(2015, 2021):
    temp = df[df.index.year==yr]
    temp = temp.set_index("dd-mm")
    output[yr] = temp
output = output.reset_index() #if you want to have dd-mm as a column instead of the index

这非常有效。我还使用
df.pivot\u表(index=['day','month'],columns='year',aggfunc='sum')使它与pivot表一起工作。reset\u index()
确实,这也可以工作!:)也许看起来也更好!