Функция pivot
Функция pivot применяется к DataFrame
и выполняет поворот таблицы, преобразуя данные из
длинного формата в широкий. Первым параметром
передаётся столбец с индексами, вторым - столбец
со значениями для колонок, третьим - столбец
со значениями для заполнения ячеек.
Синтаксис
pd.pivot(df, index, columns, values)
Параметры
Функция pivot принимает следующие параметры:
-
index- столбец, который станет индексом в новой таблице -
columns- столбец, который станет колонками в новой таблице -
values- столбец со значениями для заполнения ячеек
Пример
Давайте создадим таблицу в длинном формате и выполним поворот:
import pandas as pd
df = pd.DataFrame({
'user': ['a', 'a', 'b', 'b'],
'year': [2020, 2021, 2020, 2021],
'value': [100, 200, 300, 400]
})
res = pd.pivot(df, index='user',
columns='year', values='value')
print(res)
Результат выполнения кода:
year 2020 2021
user
a 100 200
b 300 400
Пример
Теперь давайте выполним поворот с несколькими столбцами значений:
import pandas as pd
df = pd.DataFrame({
'user': ['a', 'a', 'b', 'b'],
'year': [2020, 2021, 2020, 2021],
'value1': [10, 20, 30, 40],
'value2': [100, 200, 300, 400]
})
res = pd.pivot(df, index='user',
columns='year', values=['value1', 'value2'])
print(res)
Результат выполнения кода:
value1 value2
year 2020 2021 2020 2021
user
a 10 20 100 200
b 30 40 300 400
Пример
Рассмотрим случай, когда индексы повторяются:
import pandas as pd
df = pd.DataFrame({
'user': ['a', 'a', 'a', 'b'],
'year': [2020, 2020, 2021, 2021],
'value': [10, 20, 30, 40]
})
try:
res = pd.pivot(df, index='user',
columns='year', values='value')
print(res)
except ValueError as e:
print(e)
Результат выполнения кода:
"Index contains duplicate entries, cannot reshape"
Смотрите также
-
функция
pivot_table,
которая выполняет поворот с агрегацией -
функция
melt,
которая преобразует таблицу из широкого формата в длинный -
функция
crosstab,
которая строит таблицу пересечений -
функция
wide_to_long,
которая преобразует широкий формат в длинный