pandas pivot_table возвращает пустой фрейм данных - PullRequest
0 голосов
/ 26 апреля 2018

Я получаю пустой фрейм данных, когда пытаюсь сгруппировать значения с помощью 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 ]

0 голосов
/ 26 апреля 2018

Вам нужно использовать len в качестве aggfunc, вот так

df.pivot_table(index='size', aggfunc=len, columns='color')

Если вы хотите использовать счетчик, выполните следующие действия:

  1. Сначала добавьте столбцы частоты, например:

    df['freq'] = df.groupby(['color', 'size'])['color'].transform('count')
    
  2. Затем создайте сводную таблицу, используя столбец частоты:

    df.pivot_table(values='freq', index='size', aggfunc='count', columns='color')
    
0 голосов
/ 26 апреля 2018

вам нужен еще один столбец для использования в качестве значений для агрегирования.

Добавьте столбец -

df['freq']=1

Ваш код будет работать.

...