首页 > 解决方案 > 水年时间序列:每年重新采样自定义非日历年日期

问题描述

我正在编写我的第一个循环,因为重采样不允许我使用自定义开始日期进行年度采样。我的目标是总结 30 年时间序列中连续 12 个月的每个系列,以进行非日历年计算(水文水年 10 月至 9 月)。数据集从 10 月份开始,所以我想我只需将前 12 行、接下来的 12 行等相加即可。完美的循环,对吧?!两个问题:

1)将'n'行添加在一起的最简单方法是什么,这些行输出到一个新的DataFrame中,按年份索引。

2)我对问题1的尝试解决方案如下,并且有效。但是,输出的数据类型是“NoneType”,我无法通过 pd.concat 与另一个 DataFrame 合并回来。我该如何解决?

def Water_Year_Total(Monthly_Data_30yrs):
    for i in range((len(Monthly_Data_30yrs))//12):
        x=0
        y=12
        new_value=sum(data[(x+(12*i)):(y+(12*i))])
        print(new_value)

for 循环首先通过 len() 函数计算行数,然后将其除以 12 得到数据集中的年数,然后将 sum 循环迭代 i 次,然后打印出结果。

标签: pythonpandasdataframenonetyperesampling

解决方案


您的函数没有return任何作用,这就是它在完成运行时产生 NoneType 的原因。在 for 循环之前创建一个变量,将不同new_value的 s 添加到其中,然后在 for 循环完成后返回该变量。


推荐阅读