在MultiIndex上的Pandas asof

时间:2019-03-07 20:21:23

标签: python pandas multi-index

我有一个附有生效日期,开始日期和值的时间表。生效日期是计划生效的日期,开始日期是应该使用该值的日期。因此,就像有两个生效日期。我创建了一个数据框 df ,其中包含有关生效日期和开始日期的多重索引。

data = [
{'EffectiveDate': '2018-07-15', 'StartDate': '2018-07-15', 'Value': 1.5},
{'EffectiveDate': '2018-07-15', 'StartDate': '2018-09-10', 'Value': 2.6},
{'EffectiveDate': '2018-08-15', 'StartDate': '2018-08-15', 'Value': 1.7},
{'EffectiveDate': '2018-08-15', 'StartDate': '2018-10-15', 'Value': 3.8}
]
df = pd.DataFrame(data)
df['EffectiveDate'] = df['EffectiveDate'].astype('datetime64[ns]')
df['StartDate'] = df['StartDate'].astype('datetime64[ns]')
df.set_index(['EffectiveDate','StartDate'], inplace=True)
df.sort_index(inplace=True)

所以数据框看起来像这样。

                          Value
EffectiveDate StartDate
2018-07-15    2018-07-15    1.5
              2018-09-10    2.6
2018-08-15    2018-08-15    1.7
              2018-10-15    3.8

我还有一个带有日期时间索引的数据框 dates_df

dates = pd.date_range(start=pd.datetime(2018,7,13).date(), periods=250).tolist()
dates_df = pd.DataFrame(index=dates,columns=["A"])

对于 dates_df 中的所有日期,我正在尝试从 df 中获取值。因此,第一步是确定哪个计划有效,然后获得“有效”开始日期。 我尝试了以下代码。

df.asof(dates_df.index).Value

我遇到以下错误。

Exception has occurred: TypeError
'<' not supported between instances of 'tuple' and 'int'

非常感谢您的帮助。

0 个答案:

没有答案