我有一个附有生效日期,开始日期和值的时间表。生效日期是计划生效的日期,开始日期是应该使用该值的日期。因此,就像有两个生效日期。我创建了一个数据框 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'
非常感谢您的帮助。