我有一个跨度为 36 个月的数据集。我想对 3 个月的时间进行下采样。我使用:
df = df.resample('3M').sum()
但是,当我查看输出时,它似乎没有正确分隔月份。例如,以下是 36 个月的数据:
1901-01-01 266.0
1901-02-01 145.9
1901-03-01 183.1
1901-04-01 119.3
1901-05-01 180.3
1901-06-01 168.5
1901-07-01 231.8
1901-08-01 224.5
1901-09-01 192.8
1901-10-01 122.9
1901-11-01 336.5
1901-12-01 185.9
1902-01-01 194.3
1902-02-01 149.5
1902-03-01 210.1
1902-04-01 273.3
1902-05-01 191.4
1902-06-01 287.0
1902-07-01 226.0
1902-08-01 303.6
1902-09-01 289.9
1902-10-01 421.6
1902-11-01 264.5
1902-12-01 342.3
1903-01-01 339.7
1903-02-01 440.4
1903-03-01 315.9
1903-04-01 439.3
1903-05-01 401.3
1903-06-01 437.4
1903-07-01 575.5
1903-08-01 407.6
1903-09-01 682.0
1903-10-01 475.3
1903-11-01 581.3
1903-12-01 646.9
如果我在 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
最佳答案
您需要参数 close='left'
它会查找最晚可能的开始,因为默认参数 close='rigth'
会查找最早可能的开始。
resample
的文档:
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
df = df.resample('3M').sum()
#df = df.resample('3M',closed='right').sum()
print (df)
col
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
关于python - Pandas 中的采样从 1 个月减少到几个月,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48114587/