Я пытаюсь повернуть следующий тип данных примера в кадре данных Pandas в Python. Я натолкнулся на пару других ответов stackoverflow, которые обсуждали, как сделать сводку: pivot_table Нет числовых типов для агрегирования
Однако, когда я использую pivot_table()
, я могу поворачивать данные. Но когда я использую set_index()
и unstack()
, я получаю следующую ошибку:
AttributeError: у объекта 'NoneType' нет атрибута 'unstack'
Пример данных:
id responseTime label answers
ABC 2018-06-24 Category_1 [3]
ABC 2018-06-24 Category_2 [10]
ABC 2018-06-24 Category_3 [10]
DEF 2018-06-25 Category_1 [7]
DEF 2018-06-25 Category_8 [10]
GHI 2018-06-28 Category_3 [7]
Желаемый вывод:
id responseTime category_1 category_2 category_3 category_8
ABC 2018-06-24 [3] [10] [10] NULL
DEF 2018-06-25 [7] NULL NULL [10]
GHI 2018-06-28 NULL NULL [7] NULL
Это работает:
df=pdDF.pivot_table(index=['items_id','responseTime'], columns='label', values='answers', aggfunc='first')
Это не работает:
pdDF.set_index(['items_id','responseTime','label'], append=True, inplace=True).unstack('label')
Я также использовал pdDF[pdDF.isnull().any(axis=1)]
, чтобы убедиться, что в столбце ответов нет данных NULL. Я также использовал append=False
, но произошла та же ошибка.
Из других потоков кажется, что set_index()
и unstack()
более эффективны, чем pivot_table()
. Я также не хочу использовать pivot_table()
, потому что для этого требуется функция агрегирования, а мой столбец ответов не содержит числовых данных. Я не хотел использовать значение по умолчанию (mean()
), поэтому я использовал first()
.
Любая идея о том, почему один метод работает, а другой нет?