У меня есть таблица df
вида (не фактическая таблица) со смешанными типами для значений:
ID | Time | Category | Value
ix ----------------------------------------------------
0 457 | 2010-09-04 15:00 | Name | 'Foo'
1 542 | 2010-09-04 15:00 | Name | 'Bar'
2 542 | 2010-09-04 15:00 | Sub | 0.2
3 542 | 2010-09-04 15:00 | Age | 18
4 457 | 2010-09-04 15:40 | Sub | 0.7
5 457 | 2010-09-04 15:40 | Age | 20
Теперь я хочу преобразовать эту таблицу в cat_df
, чтобы каждая категория быласвой собственный столбец со значением в виде строк, и он индексируется сначала по идентификатору, а затем по времени внутри определенного идентификатора, так что:
ID | Time | Name | Sub | Age
ix ----------------------------------------------------
0 457 | 2010-09-04 15:00 | 'Foo' | - | -
1 457 | 2010-09-04 15:40 | - | 0.7 | 20
2 542 | 2010-09-04 15:00 | 'Bar' | 0.2 | 18
Тире означает NA/NoneType
.Я продолжаю получать повторяющиеся ошибки всякий раз, когда я использую df.pivot
с ID и временем в качестве индекса.Поэтому я запустил следующий код:
mid_df = df.pivot(columns='Category', values='Value')
И в результате я получаю следующую таблицу для mid_df
:
Name | Sub | Age
ix ------------------------------
0 'Foo' | - | -
1 'Bar' | - | -
2 - | 0.2 | -
3 - | - | 18
4 - | 0.7 | -
5 - | - | 20
Что нормально, я полагаю?Я могу добавить ID и данные о времени, присоединившись к ix
.Но я хотел бы объединить строки по времени для каждого идентификатора.чтобы получить финальную таблицу выше.
- Так как мне преобразовать
df
в cat_df
напрямую, помня ID и время? - Или как объединить строкив
mid_df
чтобы обеспечить наименьшее количество NA для каждого временного шага? - Агрегирование : если бы я хотел агрегировать данные по часам / данным, как бы я обрабатывал смешанные типы данных для значений?Я хотел бы усреднить для числовых и выбрать последний для категориальных
- Кроме того, есть ли способ определить, какой период времени агрегировать, чтобы обеспечить наименьшее количество NA? *