Изменение формы и сводные таблицы - ValueError: индекс содержит повторяющиеся записи, не может изменить форму - PullRequest
0 голосов
/ 17 ноября 2018

Мой фрейм данных df имеет следующую структуру:

product_id  url                 type
0   2013367 7405e0c483323f78b   A
1   2013367 ea919d2276f60f31e   B
2   452998  117312244aa203a03   A
3   452998  1a6a41a6141235d68   B
4   2196333 cd66f91431fbae2d4   A

Я пытаюсь использовать функцию панд pivot для реструктуризации фрейма данных следующим образом:

product_id   A                  B
2013367      7405e0c483323f78b  ea919d2276f60f31e   
452998       117312244aa203a03  1a6a41a6141235d68   
2196333      cd66f91431fbae2d4  NaN

Свернутьdocs (https://pandas -docs.github.io / pandas-docs-travis / reshaping.html ) Я использую df.pivot(index="product_id", columns="type",values='url')

Однако я получаю следующую ошибку:

ValueError: Индекс содержит повторяющиеся записи, не может изменить форму

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

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 17 ноября 2018

Хорошо, я только что выяснил, что проблема была в том, что в моем наборе данных были product_id, которые связаны с типом A несколько раз. Вот так:

product_id  url                 type
0   2013367 7405e0c483323f78b   A
1   2013367 ea919d2276f60f31e   B
2   452998  117312244aa203a03   A < ---- same id and type but different url
3   452998  1a6a41a6141235d68   A < ---- same id and type but different url
4   2196333 cd66f91431fbae2d4   A

Следовательно, pandas не знал, какое значение назначить, что привело к появлению вышеуказанной ошибки.

Решение было использовать drop_duplicates до pivot, например: df.drop_duplicates(subset=["product_id","type"],inplace=True)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...