Есть ли лучший способ переиндексировать фрейм данных с несколькими индексами?

#pandas #multi-index

Вопрос:

Давний читатель, первый раз спрашивающий… будь нежен!

У меня есть фрейм данных (называемый original_df), который отображает данные транзакций — каждая строка является одной транзакцией. Уникальная транзакция определяется 4 ключевыми столбцами: [«Владелец», «Идентификатор», «Продукт», «Дата производства»]

Если в определенной проводке была корректировка, то у одного и того же элемента будет несколько дат платежа. Это боль в заднице, разрезать это на столько отдельных столбцов, поэтому я хочу переинспектировать это для упрощения.

Во-первых, я создал объект gropuby для организации данных:

 grouped = original_df.groupby(by=['Owner', 'ID', 'Product', 'ProductionDate', 'PaymentDate'], dropna=True).sum()
 

Теперь у него есть мультииндекс, который я хочу переиндексировать с помощью чисел. Но сначала я хочу удалить дату платежа из индекса, чтобы, когда я смотрю на один элемент, я мог видеть все корректировки, связанные с ним.

Ниже приведен мой подход, и мне просто интересно, есть ли лучший способ сделать это, потому что это кажется действительно громоздким:

 # enumerate unique keys
index_dict = dict(enumerate(grouped.reset_index(level='PaymentDate').index.unique()))

#flip the keys and values so I can map them to the index
new_index = dict((v,k) for k,v in index_dict.items())
grouped['id'] = grouped.index.map(new_index)

#Set the index
grouped= grouped.reset_index().set_index('id')
 

Комментарии:

1. пожалуйста, поделитесь образцом фрейма данных с ожидаемым результатом