pandas pivot_table возвращает пустой фрейм данных
Я получаю пустой фрейм данных, когда пытаюсь сгруппировать значения с помощью pivot_table. Давайте сначала создадим некоторые глупые данные:
import pandas as pd
df = pd.DataFrame({"size":['large','middle','xsmall','large','middle','small'],
"color":['blue','blue','red','black','red','red']})
Когда я использую:
df1 = df.pivot_table(index='size', aggfunc='count')
возвращает мне то, что я ожидаю. Теперь я хотел бы иметь полную сводную таблицу с цветом в качестве столбца:
df2 = df.pivot_table(index='size', aggfunc='count',columns='color')
Но это приводит к пустому фрейму данных. Зачем? Как я могу получить простую сводную таблицу, которая подсчитывает мне количество комбинаций? Спасибо.
2 ответа
Вам нужно использовать len как aggfunc, вот так
df.pivot_table(index='size', aggfunc=len, columns='color')
Если вы хотите использовать счетчик, вот шаги:
Сначала добавьте частоту столбцов, например так:
df['freq'] = df.groupby(['color', 'size'])['color'].transform('count')
Затем создайте сводную таблицу, используя столбец частоты:
df.pivot_table(values='freq', index='size', aggfunc='count', columns='color')
Вам нужен другой столбец, который будет использоваться в качестве значений для агрегации.
Добавить столбец -
df['freq']=1
Ваш код будет работать.