pandas.DataFrame.pivot#

DataFrame.сводная таблица(*, столбцы, index=, values=)[источник]#

Возвращает преобразованный DataFrame, организованный по заданным значениям индекса/столбца.

Преобразование данных (создание "сводной" таблицы) на основе значений столбцов. Использует уникальные значения из указанных index / столбцы для формирования осей результирующего DataFrame. Эта функция не поддерживает агрегацию данных, несколько значений приведут к MultiIndex в столбцах. См. Руководство пользователя для получения дополнительной информации о преобразовании формы.

Параметры:
столбцыstr или object или список str

Столбец, используемый для создания столбцов нового фрейма.

indexstr или object или список str, необязательно

Столбец, используемый для создания индекса нового фрейма. Если не указан, используется существующий индекс.

valuesstr, object или список из предыдущих, опционально

Столбец(цы) для заполнения значений нового фрейма. Если не указано, будут использованы все оставшиеся столбцы, и результат будет иметь иерархически индексированные столбцы.

Возвращает:
DataFrame

Возвращает преобразованный DataFrame.

Вызывает:
ValueError:

Когда есть любые index, столбцы комбинации с несколькими значениями. DataFrame.pivot_table когда вам нужно агрегировать.

Смотрите также

DataFrame.pivot_table

Обобщение pivot, которое может обрабатывать дублирующиеся значения для одной пары индекс/столбец.

DataFrame.unstack

Сводная таблица на основе значений индекса вместо столбца.

wide_to_long

Широкую панель в длинный формат. Менее гибкий, но более удобный для пользователя, чем melt.

Примечания

Для более тонкой настройки см. документацию по иерархической индексации вместе с методами stack/unstack.

Ссылка руководство пользователя для дополнительных примеров.

Примеры

>>> 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
    foo   bar  baz  zoo
0   one   A    1    x
1   one   B    2    y
2   one   C    3    z
3   two   A    4    q
4   two   B    5    w
5   two   C    6    t
>>> df.pivot(index='foo', columns='bar', values='baz')
bar  A   B   C
foo
one  1   2   3
two  4   5   6
>>> df.pivot(index='foo', columns='bar')['baz']
bar  A   B   C
foo
one  1   2   3
two  4   5   6
>>> df.pivot(index='foo', columns='bar', values=['baz', 'zoo'])
      baz       zoo
bar   A  B  C   A  B  C
foo
one   1  2  3   x  y  z
two   4  5  6   q  w  t

Вы также можете назначить список имен столбцов или список имен индексов.

>>> df = pd.DataFrame({
...        "lev1": [1, 1, 1, 2, 2, 2],
...        "lev2": [1, 1, 2, 1, 1, 2],
...        "lev3": [1, 2, 1, 2, 1, 2],
...        "lev4": [1, 2, 3, 4, 5, 6],
...        "values": [0, 1, 2, 3, 4, 5]})
>>> df
    lev1 lev2 lev3 lev4 values
0   1    1    1    1    0
1   1    1    2    2    1
2   1    2    1    3    2
3   2    1    2    4    3
4   2    1    1    5    4
5   2    2    2    6    5
>>> df.pivot(index="lev1", columns=["lev2", "lev3"], values="values")
lev2    1         2
lev3    1    2    1    2
lev1
1     0.0  1.0  2.0  NaN
2     4.0  3.0  NaN  5.0
>>> df.pivot(index=["lev1", "lev2"], columns=["lev3"], values="values")
      lev3    1    2
lev1  lev2
   1     1  0.0  1.0
         2  2.0  NaN
   2     1  4.0  3.0
         2  NaN  5.0

Вызывается ValueError, если есть дубликаты.

>>> df = pd.DataFrame({"foo": ['one', 'one', 'two', 'two'],
...                    "bar": ['A', 'A', 'B', 'C'],
...                    "baz": [1, 2, 3, 4]})
>>> df
   foo bar  baz
0  one   A    1
1  one   A    2
2  two   B    3
3  two   C    4

Обратите внимание, что первые две строки одинаковы для нашего index и столбцы аргументы.

>>> df.pivot(index='foo', columns='bar', values='baz')
Traceback (most recent call last):
   ...
ValueError: Index contains duplicate entries, cannot reshape