#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. пожалуйста, поделитесь образцом фрейма данных с ожидаемым результатом