Как мне использовать ffill с мультииндексом

Я задал (и ответил) вопрос здесь. Pandas ffill преобразовал данные, сгруппированные по столбцам, где я хотел знать, как заполнить диапазон дат для каждой уникальной записи для столбца (мой столбец активов).

Мое решение требует, чтобы "идентификатор" актива был столбцом. Тем не менее, данные имеют больше смысла для меня, как мультииндекс. Кроме того, я хотел бы больше полей в мультииндекс. Является ли единственный способ заполнения вперед, чтобы удалить поля без даты из мультииндекса перед заполнением?

Модифицированная версия моего примера (для работы на df с мультииндексом) здесь:

from datetime import datetime, timedelta
import pytz

some_time = datetime(2018,4,2,20,20,42)
start_date = datetime(some_time.year,some_time.month,some_time.day).astimezone(pytz.timezone('Europe/London'))
end_date = start_date + timedelta(days=1)
start_date = start_date + timedelta(hours=some_time.hour,minutes=(0 if some_time.minute < 30 else 30 ))
df = pd.DataFrame(['A','B'],columns=['asset_id'])
df2=df.copy()
df['datetime'] = start_date
df2['datetime'] = end_date
df['some_property']=0
df.loc[df['asset_id']=='B','some_property']=2
df = df.append(df2).set_index(['asset_id','datetime'])

С чем, возможно, мое сумасшедшее решение здесь:

df = df.reset_index()
df = df.set_index('datetime').groupby('asset_id').resample('30T').ffill().drop('asset_id',axis=1)
df = df.reset_index().set_index(['asset_id','datetime'])

Могу ли я избежать всего этого переиндексации?

0 ответов

Другие вопросы по тегам