【发布时间】:2020-10-03 16:00:00
【问题描述】:
问题:我有一个每日黄金价格的数据集。我想取每个月的平均值,并通过重新采样数据来做到这一点。接下来,我想将每个月的日期更改为每个营业月的月底,我通过重新采样新的平均数据并再次重新采样来做到这一点。代码如下。
gold_df = gold_df.resample(rule='M').mean()
gold_df = gold_df.resample(rule='BM').last()
>>> gold_df
Date
1979-01-31 227.215217
1979-02-28 245.670000
1979-03-30 NaN
1979-04-30 238.664286
1979-05-31 257.782609
问题:但是,我在某些月份得到 NaN。在这种情况下,重采样方法不应该只更改日期,因为每个月只有一个值(由于第一个重采样步骤)。我通过执行以下操作解决了这个问题,但对理解 resample() 背后的直觉以及为什么我需要首先重新采样“BMS”频率然后再次“BM”感到困惑。
gold_df = gold_df.resample(rule='M').mean()
gold_df = gold_df.resample(rule='BMS').last()
gold_df = gold_df.resample(rule='BM').last()
>>> gold_df
Date
1978-12-29 226.000000
1979-01-31 227.215217
1979-02-28 245.670000
1979-03-30 242.047727
1979-04-30 238.664286
【问题讨论】:
标签: python pandas dataframe frequency reindex