Python 带数值索引的熊猫系列重采样
假设我有一个带数值类型索引的熊猫系列,例如Python 带数值索引的熊猫系列重采样,python,pandas,Python,Pandas,假设我有一个带数值类型索引的熊猫系列,例如 pd.Series( [10,20], [1.1, 2.3] ) 我们如何以0.1的间隔对上述序列进行重采样?看起来.resample func只在日期时间间隔上工作 因为浮点比较运算,我认为不能有非整数索引。但是,使用.1,您可以执行以下操作: 创建一个新的df=pd.DataFrame(index=range(100201))[这些现在将表示.1] 将100(最初为10)和200(最初为20)的值设置为1.1和2.3 df.fillna(met
pd.Series( [10,20], [1.1, 2.3] )
我们如何以0.1的间隔对上述序列进行重采样?看起来.resample func只在日期时间间隔上工作 因为浮点比较运算,我认为不能有非整数索引。但是,使用.1,您可以执行以下操作:
- 创建一个新的
[这些现在将表示.1]df=pd.DataFrame(index=range(100201))
- 将100(最初为10)和200(最初为20)的值设置为1.1和2.3
df.fillna(method='pad',inplace=True)
而且,看起来你根本不需要使用索引,你只需要数据之间的间隔…这就是所谓的插值。您可以将重采样视为插值的一种特殊情况
In [24]: new_idx = s.index + pd.Index(np.arange(1.1, 2.3, .01))
In [25]: s.reindex(new_idx).interpolate().head()
Out[25]:
1.10 10.000000
1.11 10.083333
1.12 10.166667
1.13 10.250000
1.14 10.333333
dtype: float64
In [26]: s.reindex(new_idx).interpolate().tail()
Out[26]:
2.26 19.666667
2.27 19.750000
2.28 19.833333
2.29 19.916667
2.30 20.000000
dtype: float64
我们需要new_idx
将原始索引和要插值的值合并,这样原始索引就不会被删除
看看插值方法:一个选项是使用“剪切”来对数据进行分类(比重采样要简单得多,但如下所示): 如果您想使用how='sum'重新采样:
In [14]: s = s.groupby(s.index).sum()
In [15]: s = s.reindex(retbins)
现在有很多N,正如Tom所建议的,你现在可以插入:
In [16]: s.interpolate()
我认为在重新编制索引时2.3会下降,因此结果不会增加…很好的捕获。我应该仔细看看。对
reindex().interpolate()
API与s.reindex(at=new_idx)
的思考?最初,它主要是为了使df.interpolate()
更易于编写。我可以看到任何一种方式的参数。@AndyHayden和tom:浮点数现在作为索引值可靠吗?它们现在受Float64Index
支持。但仍然有一些棘手的问题,所以我尽量避免它们。我认为使用切割更稳定,希望你/某人知道一个更好的方法!正如我们刚刚发现的那样,浮动非常灵活/敏感,但有时它们很有用。。。小心处理。
In [16]: s.interpolate()