我在 .CSV 文件。
我想要不同年份同一日期的 X 值的平均值,即 X 值的平均值 01-jan-2000、01-jan-2001、01-jan-2002、01-jan-2003、01-jan-2004 和 01-jan-2005 然后是 02-jan-2000、02-jan-2001、02-jan-2002、02-jan-2003、02-jan-2004 和 02-jan-2005 等等。
我出于同样的目的使用了:dataframe.groupby('dateindex.dayofyear').mean()['X']
命令,但不幸的是,它从闰年的 2 月 29 日和非闰年的 3 月 1 日给出了错误的平均值。
包含日期、X 值和平均值(示例数据的预期结果(的示例:
Date X Mean(Expected Outcome)
01-01-2000 1 (1+4)/2=2.5
02-01-2000 2 3.5
03-01-2000 3 4.5
01-01-2001 4 2.5
02-01-2001 5 3.5
03-01-2001 6 4.5
使用pd.to_datetime
和pd.Series.dt.strftime
的一种方式:
df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)
df['Mean'] = df.groupby(df['Date'].dt.strftime("%m%d"))["X"].transform("mean")
print(df)
或者简单地使用str
:
df['Mean'] = df.groupby(df["Date"].str[:5])["X"].transform("mean")
输出:
Date X Mean
0 2000-01-01 1 2.5
1 2000-01-02 2 3.5
2 2000-01-03 3 4.5
3 2001-01-01 4 2.5
4 2001-01-02 5 3.5
5 2001-01-03 6 4.5