Ошибка Pandas Pivot «Исключение: данные должны быть одномерными» - PullRequest
0 голосов
/ 14 января 2019

Я использую Pycharm (версия 2018.2.4) с запущенным Python 3.6.7.

В настоящее время я пытаюсь использовать функцию pandas pivot, но даже пример кода:

import pandas as pd
df = pd.DataFrame({'foo':['one', 'one', 'one', 'two', 'two','two'],'bar': 
  ['A', 'B', 'C', 'A', 'B', 'C'],'baz': [1, 2, 3, 4, 5, 6],'zoo': ['x', 
   'y', 'z', 'q', 'w', 't']})
df.pivot(index='foo', columns='bar', values=['baz', 'zoo'])

приводит к ошибке: Исключение: данные должны быть одномерными

Это только тот случай, когда я передаю список столбцов параметру values, однако этот пример взят прямо из справки функции: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.pivot.html

Раньше он работал на меня и перестал работать на этой неделе, не знаю почему. Моя версия для панд - 0.23.4, а для numpy - 1.15.4.

Кто-нибудь знает, что вызывает это / как это исправить?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 17 января 2019

Мне удалось воссоздать ту же ошибку при тестировании в ноутбуке Jupyter с Панды: 0,22,0 и NumPy: 1,14,0.

Я не смог выяснить, почему возникает эта проблема, но я переписал код в примере как

import pandas as pd
df = pd.DataFrame({'foo': ['one', 'one', 'one', 'two', 'two',
                          'two'],
                  'bar': ['A', 'B', 'C', 'A', 'B', 'C'],
                   'baz': [1, 2, 3, 4, 5, 6],
                   'zoo': ['x', 'y', 'z', 'q', 'w', 't']})

df.set_index(['foo','bar'],inplace=True)
df.unstack(level=1)

и получил ожидаемый результат (как видно из pandas doc )

Надеюсь, это поможет!

0 голосов
/ 08 февраля 2019

У меня работает следующее. Попробуйте!

import pandas as pd
df = pd.DataFrame({'foo':['one', 'one', 'one', 'two', 'two','two'],'bar': 
  ['A', 'B', 'C', 'A', 'B', 'C'],'baz': [1, 2, 3, 4, 5, 6],'zoo': ['x', 
   'y', 'z', 'q', 'w', 't']})
df.pivot(index='foo', columns='bar')[['baz', 'zoo']]
0 голосов
/ 14 января 2019

Если вы сделаете из него словарь, он может работать нормально. Попробуйте это!

df = pd.DataFrame({'foo':['one', 'one', 'one', 'two', 'two','two'],'bar': 
  ['A', 'B', 'C', 'A', 'B', 'C'],'baz': [1, 2, 3, 4, 5, 6],'zoo': ['x', 
   'y', 'z', 'q', 'w', 't']})
df.pivot(index='foo', columns='bar', values=['baz', 'zoo'])

#output:

    baz zoo
bar A   B   C   A   B   C
foo                     
one 1   2   3   x   y   z
two 4   5   6   q   w   t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...