我正在努力解决以下问题: 我有以下结构的时间序列数据的多级索引数据框:
import pandas as pd
import numpy as np
multi_index = pd.MultiIndex.from_tuples([('2022-02-18', '2022-02-17'),
('2022-02-19', '2022-02-17'),
('2022-02-20', '2022-02-17'),
('2022-02-21', '2022-02-17'),
('2022-02-19', '2022-02-18'),
('2022-02-20', '2022-02-18'),
('2022-02-21', '2022-02-18'),
('2022-02-22', '2022-02-18'),
('2022-02-20', '2022-02-19'),
('2022-02-21', '2022-02-19'),
('2022-02-22', '2022-02-19'),
('2022-02-23', '2022-02-19'),],
names=['date1','date2'])
data = [[45, 365],
[91, 254],
[60, 268],
[57, 781],
[68, 236],
[36, np.nan],
[87, 731],
[12, 452],
[np.nan, 214],
[33, 654],
[74, 113],
[65, 381]]
df = pd.DataFrame(data, columns=['value1', 'value2'], index = multi_index)
df 如下表所示:
约会1 | 约会2 | 值1 | 值2 |
---|---|---|---|
2022-02-18 | 2022-02-17 | 45 | 365 |
2022-02-19 | 2022-02-17 | 91 | 254 |
2022-02-20 | 2022-02-17 | 60 | 268 |
2022-02-21 | 2022-02-17 | 57 | 781 |
2022-02-19 | 2022-02-18 | 68 | 236 |
2022-02-20 | 2022-02-18 | 36 | 南 |
2022-02-21 | 2022-02-18 | 87 | 731 |
2022-02-22 | 2022-02-18 | 12 | 452 |
2022-02-20 | 2022-02-19 | 南 | 214 |
2022-02-21 | 2022-02-19 | 33 | 654 |
2022-02-22 | 2022-02-19 | 74 | 113 |
2022-02-23 | 2022-02-19 | 65 | 381 |
date1 和date2 是多索引。我想用 date2 中的最后一个可用值来估算表中的缺失值。因此,在这种情况下,value1 为 36,value2 为 268,因为我希望估算值的 date1 相同,而 date2 我想采用最后一个可用值。
我尝试用 pandas 方法 fillna() 进行估算,并尝试了超参数“方法”的不同变体,但似乎没有什么是解决我的问题的合适方法。
这应该给你你所描述的:
df.groupby('date1').ffill()