pandas 将季节定义为6月1日至7月30日,而不是1月1日至12月31日 [英] Pandas define a seasonal year from June 1 - July 30 instead of Jan 1 - Dec 31

查看:77
本文介绍了 pandas 将季节定义为6月1日至7月30日,而不是1月1日至12月31日的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有季节性的降雪数据,我想按降雪年(1954年7月1日至1955年6月30日)进行分组,而不是将一个冬季的数据分为两年(1954年1月1日至1954年12月31日和1月1日) ,1955年-1955年12月31日.)

I have seasonal snow data which I want to group by snow year (July 1, 1954 - June 30, 1955) rather than having one winter's data split over two years (January 1, 1954 - December 31, 1954 and January 1, 1955 - Dec 31, 1955.)

示例数据

我修改了以下问题的代码:

I modified the code from this question:

使用熊猫从值超过定义阈值的数据框中选择特定季节(感谢Pad)

def get_season(row):
  if row['date'].month <= 7:
      return row['date'].year
  else:
      return row['date'].year + 1

df['Seasonal_Year'] = df.apply(get_season, axis=1)

方法调用的结果

有没有比我做的更好的方法了?

Is there a better way to do this than I have done?

推荐答案

我认为是的,使用

I think yes, with numpy.where:

years = df['date'].dt.year
df['Seasonal_Year'] = np.where(df['date'].dt.month <= 7, years, years + 1)

这篇关于 pandas 将季节定义为6月1日至7月30日,而不是1月1日至12月31日的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆