Панды asof на MultiIndex - PullRequest
       14

Панды asof на MultiIndex

0 голосов
/ 07 марта 2019

У меня есть графики с датой вступления в силу, датой начала и значением. Дата вступления в силу - это дата вступления в силу расписания, а дата начала - это дата, с которой следует использовать значение. Итак, это как две эффективные даты. Я создал фрейм данных 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

У меня есть второй фрейм данных date_df с индексом даты и времени.

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

Для всех дат в date_df я пытаюсь получить значение из df . Таким образом, первый шаг - выяснить, какой график эффективен, а затем получить «эффективную» дату начала. Я попробовал следующий код.

df.asof(dates_df.index).Value

Я получаю следующую ошибку.

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

Любая помощь очень ценится.

...