Как отобразить частоту элементов в фрейме данных pandas?

#python #pandas #dataframe #pandas-groupby

#python #pandas #фрейм данных #pandas-groupby

Вопрос:

У меня есть фрейм данных pandas, содержащий следующие столбцы (с существующим числовым индексом):

     points | variety
    ----------------
1       97 | Chardonnay
17      67 | Cabernet Sauvignon
12      70 | Cabernet Sauvignon
8       97 | Chardonnay
  

Я хотел бы преобразовать это в новый фрейм данных с:

  • points Столбец в качестве нового индекса
  • Один столбец для каждой уникальной записи в variety столбце
  • Значения в столбцах с новым именем variety должны содержать частоту, с которой каждое изменение встречалось для исходного points значения в исходной таблице.

Например, из примера выше:

     Chardonnay | Cabernet Sauvignon
    -------------------------------
97           2 | 0
67           0 | 1
70           0 | 1
  

Обратите внимание, что исходный индекс не имеет отношения к результату. Вот изображение, показывающее более полный пример: Снимок фрейма данных Pandas.

Ответ №1:

Для этого вы можете использовать Pandas.crosstab :

 pd.crosstab(index=df.points, columns=df.variety)
  

[выход]

 variety  Cabernet Sauvignon  Chardonnay
points                                 
67                        1           0
70                        1           0
97                        0           2