这个question完全描述了我想要做的事情,这个answer完全适用于我的示例数据。 但是,在使用我真实的,更大的数据集时,我遇到了一些问题。 在我的真实数据集中,我想要每百分点进行一次子采样。目前,该指数分别为259.05,259.06,259.07,259.08,259.09,259.1,259.11,259.12,259.13,259.14 ......我想将其二次抽样至259,260,261 ...... 但我想从一些合理的数字开始,例如260或至少259.5。
但是,当我按照上述答案中的建议进行操作时,以下代码可以正常工作:
s = (df.index.to_series()).astype(int)
df.groupby(s).mean().set_index(s.index[13::100])
产生259.18,260.18,261.18 ....但如果我从任何更高的点开始,
df.groupby(s).mean().set_index(s.index[14::100])
我得到:ValueError: Length mismatch: Expected axis has 635 elements, new values have 634 elements
长话短说: 输入:
index some data
259.05 x
259.06 x
259.07 x
259.08 x
259.09 x
259.1 x
259.11 x
259.12 x
259.13 x
259.14 x
259.15 x
… …
期望的输出:
index some data
260 mean x
261 mean x
262 mean x
263 mean x
264 mean x
265 mean x
266 mean x
267 mean x
268 mean x
269 mean x
270 mean x
… …
显然这是因为数据的长度不足以满足另一个满100的要求。那么如何才能在期望的点上对其进行采样呢?