根据 python 中的日期计算存储在 excel /.CSV 文件中的值的气候平均值
Calculate the climatological mean of values stored in excel /.CSV files according to the day of the year in python
我在 .CSV 文件中有 2000 年到 2005 年所有日期的数据 X。
我想要不同年份相同日期的 X 值的平均值,即 01-jan-2000、01-jan-2001、01-jan-2002、01-jan-2003、01 的 X 值的平均值-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
我在 .CSV 文件中有 2000 年到 2005 年所有日期的数据 X。
我想要不同年份相同日期的 X 值的平均值,即 01-jan-2000、01-jan-2001、01-jan-2002、01-jan-2003、01 的 X 值的平均值-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