pandas Python:拉伸和插入长度不等的时间序列

7hiiyaii  于 2022-11-20  发布在  Python
关注(0)|答案(1)|浏览(210)

我有一个Pandas Dataframe ,下面有几个时间序列tatb等,以及相应的测量值,这里用avbv....给出。

ta = np.arange(0, 1, 0.01)
av = np.random.rand(ta.shape[0], 1).flatten()
tb = np.arange(0, 1, 0.015)
bv = np.random.rand(tb.shape[0], 1).flatten()

d = {'ta': ta, 'a_val': av, 'tb':tb, 'b_val':bv}
pd.DataFrame(dict([ (k,pd.Series(v)) for k,v in d.items() ]))

时间序列都从0到1。我想拉伸和插入较短的数据,使它们具有相同的行数。
我打算使用pd.resample(),但似乎数据必须是日期/时间格式。

mbskvtky

mbskvtky1#

将问题分为两步:
1.扩展较短的阵列(tb和bv)
创建数组后,按照mccandar的建议,使用以下命令扩展tb和bv:

to = len(ta)

tb_resized  = np.repeat(np.nan,to)
foreign = np.linspace(0,to-1,len(tb)).round().astype(int)
tb_resized[foreign] = tb

bv_resized  = np.repeat(np.nan,to)
foreign = np.linspace(0,to-1,len(tb)).round().astype(int)
bv_resized[foreign] = bv
d = {'ta': ta, 'a_val': av, 'tb':tb_resized, 'b_val':bv_resized}

1.插值。
幸运的是,panda通过interpolate方法使这个操作变得简单!

pd.DataFrame(dict([ (k,pd.Series(v)) for k,v in d.items()])).interpolate()

相关问题