用另一个时间序列的索引重新采样时间序列

15

我有两个数据框,具有相同的列但不同的日期时间索引。 我想将它们中的一个重采样以使用另一个的索引,并在另一个索引中存在不含数据的日期上向前填充来自另一个数据框的数据。

import pandas as pd
import numpy as np
from datetime import datetime as dt

a_values = np.random.randn(4, 4)
a_index = [dt(2012, 3, 16), dt(2012, 3, 19), dt(2012, 3, 20), dt(2012, 3, 21)]
a = pd.DataFrame(data=a_values, index=a_index)

b_values = np.trunc(np.random.randn(3, 4) * 1000)
b_index = [dt(2012, 3, 16), dt(2012, 3, 19), dt(2012, 3, 21)]
b = pd.DataFrame(data=b_values, index=b_index)

c_insert = a.ix['2012-03-20']
c = b.append(c_insert).sort()
c.ix['2012-03-20'] = c.ix['2012-03-19']

'a'表示数据帧,我想使用它作为重新采样参考的索引。'b'代表我想要重新采样和向前填充数据的数据框。'c'代表我想要结果看起来像什么。

请注意,'b'缺少存在于'a'中的'2012-03-20'索引。'c'用'b'索引'2012-03-19'的列中的数据填充索引为'2012-03-20'的列。

Pandas是否有此功能?

提前致谢。

PiR

1个回答

15

要按照参考索引重新采样,请使用reindex

In [11]: b.reindex(a.index, method='ffill')
Out[11]: 
               0     1     2     3
2012-03-16  -926  -625   736   457
2012-03-19 -1024   742   732 -1020
2012-03-20 -1024   742   732 -1020
2012-03-21  1090 -1163  1652   -94

5
你也可以使用:b.reindex_like(a, method='ffill')。这个方法可以让你重新索引一个对象,使其与另一个对象具有相同的索引,并选择如何填充缺失值。 - Andy Hayden
虽然 reindex_like 在数据框具有不同列时会产生不同的效果!如果您只想更改索引,请使用 reindex - 4Oh4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接