给出这样的系列
Date
2005-01-01 128
2005-01-02 72
2005-01-03 67
2005-01-04 61
2005-01-05 33
Name: Data_Value, dtype: int64
几年来,我如何将所有1月1日,所有1月2日等分组?
我实际上正在尝试查找几年中一年中每一天的最大值,因此不必进行分组。如果有更简单的方法可以做到这一点,那就太好了。
答案 0 :(得分:2)
您可以将索引转换为日期时间,然后使用strftime
获取日期格式的字符串进行分组:
df.groupby(pd.to_datetime(df.index).strftime('%b-%d'))['Date_Value'].max()
如果日期字符串中没有NaN,则也可以切片。这将返回格式为“ MM-DD”的字符串:
df.groupby(df.index.astype(str).str[5:])['Date_Value'].max()
答案 1 :(得分:1)
或者,您可以使用数据透视表:
重置索引和格式化日期列
df=df.reset_index()
df['date']=pd.to_datetime(df['index'])
df['year']=df['date'].dt.year
df['month']=df['date'].dt.month
df['day']=df['date'].dt.day
在“月和日”列上进行透视:
df_grouped=df.pivot_table(index=('month','day'),values='Date',aggfunc='max')
答案 2 :(得分:0)
为什么不只是保持简单!
max_temp = dfall.groupby([(dfall.Date.dt.month),(dfall.Date.dt.day)])['Data_Value'].max()