У меня есть мультииндексный фрейм данных, который выглядит так:
In[13]: df
Out[13]:
Last Trade
Date Ticker
1983-03-30 CLM83 1983-05-18
CLN83 1983-06-17
CLQ83 1983-07-18
CLU83 1983-08-19
CLV83 1983-09-16
CLX83 1983-10-18
CLZ83 1983-11-18
1983-04-04 CLM83 1983-05-18
CLN83 1983-06-17
CLQ83 1983-07-18
CLU83 1983-08-19
CLV83 1983-09-16
CLX83 1983-10-18
CLZ83 1983-11-18
С двумя уровнями для индексов (а именно «Дата» и «Тикер»). Я хотел бы применить функцию к столбцу «Последняя сделка», которая позволит мне узнать, сколько месяцев отделяет эту дату «Последняя сделка» от индекса «Дата». Я нашел функцию, которая выполняет расчет:
from calendar import monthrange
def monthdelta(d1, d2):
delta = 0
while True:
mdays = monthrange(d1.year, d1.month)[1]
d1 += datetime.timedelta(days=mdays)
if d1 <= d2:
delta += 1
else:
break
return delta
Я попытался применить следующую функцию h, но она возвращает мне AttributeError: объект «Timestamp» не имеет атрибута «index»:
In[14]: h = lambda x: monthdelta(x.index.get_level_values(0),x)
In[15]: df['Last Trade'] = df['Last Trade'].apply(h)
Как я могу применить функцию, которая будет использовать как столбец, так и значение индекса?
Спасибо за ваши советы,