Spec-Zone.ru › pandas 1

pandas.pivot

pandas.pivot(data, index=None, columns=None, values=None)[source]

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

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

Параметры
data:DataFrame
index:строка или объект или список строк, необязательно

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

Изменено в версии 1.1.0: Также принимается список имён индекса.

columns:строка или объект или список строк

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

Изменено в версии 1.1.0: Также принимается список имён столбцов.

values:строка, объект или список предыдущих, необязательно

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

Возвращает
DataFrame

Возвращает преобразованную DataFrame.

Возбуждает
ValueError:

При наличии любых сочетаний index, columns с несколькими значениями. Используйте 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 и columns.

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

© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/1.5.0/reference/api/pandas.pivot.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API