【问题标题】:Calculate average, max and min based on water year根据水年计算平均值、最大值和最小值
【发布时间】:2020-03-01 05:42:29
【问题描述】:

我可以根据将一年的第一天作为一月第一来计算年平均值、最大值和最小值,例如:

    yearly_avg=df2.groupby(years).mean()
    yearly_sum=df2.groupby(years).sum()
    yearly_MAX=df2.groupby(years).max()
    yearly_MIN=df2.groupby(years).min()

我需要根据水年计算平均值、最大值和最小值,其中 10 月 1 日是一年的第一天。作为“水年”的解释:https://en.wikipedia.org/wiki/Water_year

这是我存储在这里的示例文件: https://drive.google.com/file/d/1AYi9vp3_DPXHoCPB_YkMQp68FvC_INrV/view?usp=sharing

我该怎么做? 谢谢。

【问题讨论】:

  • 你能展示一个你的数据框的例子吗?
  • 你能给我们一些示例数据吗? “年”是一个时间戳列还是只是一个年数?此外,您能否澄清“10 月 1 日是一年中的第一天”的问题是一个令人困惑的条件,因为 10 月 1 日绝不是任何一年的第一天。
  • 我刚刚编辑了我的问题并添加了示例数据。

标签: pandas


【解决方案1】:

只需将年份设置为从 10 月开始,而不是从 1 月开始。我很高兴你的专栏已经是datetime 类型,这让它变得更容易了!

df = pd.read_excel('sample_water_year.xlsx')
df['# YEAR'] = df.Dates.dt.to_period('A-Sep') #year ends on sep

请注意,您必须减去 1,因为它不会更改初始年份值集。

df['# YEAR'] = df['# YEAR'] - 1

然后简单的找到汇总统计:

yearly_avg = df.groupby('# YEAR').mean()
yearly_sum = df.groupby('# YEAR').sum()
yearly_MAX = df.groupby('# YEAR').max()
yearly_MIN = df.groupby('# YEAR').min()

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2016-11-04
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多