【问题标题】:How can I calculate seasonal average temperatures for each season in every year?如何计算每年每个季节的季节性平均气温?
【发布时间】:2021-12-20 02:56:53
【问题描述】:

我需要计算每年每个季节的季节性平均气温。季节为冬季(十二月、一月、二月)、春季(三月、四月、五月)、夏季(六月、七月、八月)和秋季(九月、十月、十一月)。起初我认为我需要对数据进行分组,然后创建一个循环,但我不知道如何。

这就是我开始编写代码的方式:

#Creating a new dataframe to simplify data

data_winter = data[['DATE', 'TAVG_C']]

#Slicing the column DATE to years and months

data_winter['YEAR_MONTH'] = data['DATE'].str.slice(start=0, stop=6)

#Grouped the data

grouped = data_winter.groupby('YEAR_MONTH')


data_winter

在图片中你可以看到我的数据框。

【问题讨论】:

  • 嗯,我的照片好像没有显示出来。 Dataframe 有两列 YEAR_MONTH 和 TAVG_C。 TAVG_C 值只是温度,YEAR_MONTH 值的形状为 YYYYMM(例如 202111)。
  • 我更新了你的问题。未格式化。
  • 我认为我们可以创建一个年份和季节代码并通过分组取平均值。 df['year'] = df['DATE'].dt.year;df['season'] = df['DATE'].dt.month%12 // 3+1;df['TAVG_C'].groupby(['year','season']).mean()

标签: python pandas dataframe average


【解决方案1】:

一种方法是:

# dictionary for the future replacement of months with seasons
ds = {12: 'winter', 1: 'winter', 2: 'winter', 3: 'spring', 4: 'spring', 5: 'spring',
      6: 'summer', 7: 'summer', 8: 'summer', 9: 'autumn', 10: 'autumn', 11: 'autumn'}

ym = df['YEAR_MONTH'].astype(str)  # if df['YEAR_MONTH'] contains only strings, then you can omit .astype(str)
# make the group indexes - for season and year
g_season = df.assign(Season=ym.str[-2:])['Season'].astype(int).replace(ds)
g_year = df.assign(Year=ym.str[:4])['Year']
# group the df['TAVG_C'] serie by year, season and calculate the mean temp
out = df['TAVG_C'].groupby([g_year, g_season]).mean().reset_index(). \
    rename(columns={'TAVG_C': 'Avg temp.'})
print(out)

输出:

   Year  Season  Avg temp.
0  1908  winter -25.388889
1  2020  autumn   7.111111

【讨论】:

  • 感谢您的回复!这行得通!
猜你喜欢
  • 2020-01-31
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 2014-10-28
  • 1970-01-01
相关资源
最近更新 更多