大Pandas从1个月减少到多个月

2024-04-20 13:59:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个跨越36个月的数据集。我想减少3个月的取样量。我使用:

df = df.resample('3M').sum()

然而,当我看产量时,它似乎没有正确地区分月份。例如,以下是36个月的数据:

^{pr2}$

如果我在3个月内重新取样,我会得到以下结果:

1901-01-31     266.0
1901-04-30     448.3
1901-07-31     580.6
1901-10-31     540.2
1902-01-31     716.7
1902-04-30     632.9
1902-07-31     704.4
1902-10-31    1015.1
1903-01-31     946.5
1903-04-30    1195.6
1903-07-31    1414.2
1903-10-31    1564.9
1904-01-31    1228.2

如果我们看第一个元素,而不是前3个月的总和,它只输出第一个月。之后,它需要三个月的时间,并开始对它们进行求和,然后重复这个过程,直到数据集结束。输出中的最后一点只对数据集中的最后两个点求和。更不用说约会都搞砸了。我期待着:

1901-03-31
1901-06-30
1901-09-31

而不是

1901-01-31
1901-04-30
1901-07-31
1901-10-31

Tags: 数据元素df过程时间地区约会resample
1条回答
网友
1楼 · 发布于 2024-04-20 13:59:13

您需要参数closed='left'它查找可能的最新开始,因为默认参数closed='rigth'查找可能的最早开始。在

^{}的文档:

closed : {‘right’, ‘left’}

Which side of bin interval is closed. The default is ‘left’ for all frequency offsets except for ‘M’, ‘A’, ‘Q’, ‘BM’, ‘BA’, ‘BQ’, and ‘W’ which all have a default of ‘right’.

df = df.resample('3M',closed='left').sum()
print (df)
               col
1901-03-31   595.0
1901-06-30   468.1
1901-09-30   649.1
1901-12-31   645.3
1902-03-31   553.9
1902-06-30   751.7
1902-09-30   819.5
1902-12-31  1028.4
1903-03-31  1096.0
1903-06-30  1278.0
1903-09-30  1665.1
1903-12-31  1703.5

^{pr2}$

相关问题 更多 >