pandas.pivot
- pandas.pivot(data, *, columns, index=_NoDefault.no_default, values=_NoDefault.no_default)[source]
-
Возвращает преобразованную DataFrame, организованную по заданным значениям индекса/столбцов.
Преобразует данные (создаёт “таблицу сводки”) на основе значений столбцов. Использует уникальные значения из указанных index / columns для формирования осей результирующей DataFrame. Эта функция не поддерживает агрегацию данных, несколько значений приведут к MultiIndex в столбцах. Подробнее о преобразовании см. Руководство пользователя.
- Параметры:
-
- data:DataFrame
- columns:str или объект или список str
-
Столбец для использования в качестве новых столбцов фрейма.
- index:str или объект или список str, необязательно
-
Столбец для использования в качестве индекса нового фрейма. Если не указан, используется существующий индекс.
- values:str, объект или список предыдущих, необязательно
-
Столбец(ы) для заполнения значений нового фрейма. Если не указан, будут использованы все оставшиеся столбцы, и результат будет иметь иерархически индексированные столбцы.
- Возвращает:
-
- 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/2.2.2/reference/api/pandas.pivot.html