Как подсчитать вхождения значений списка в столбец другого фрейма данных? - PullRequest
3 голосов
/ 24 марта 2019

Мне нужно посчитать, сколько раз значения списка появляются в столбце другого фрейма данных.

Я пытался использовать df['Column'].value_counts().Однако, если значение находится в списке, но отсутствует в столбце, оно не будет отображаться в результате.

df = pd.DataFrame({'Column': [HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW]})

list = ['HIGH', 'MEDIUM', 'LOW']

Я ожидаю, что результат будет:

HIGH      3
MEDIUM    0
LOW       4

Но используя .value_counts(), я получаю:

HIGH      3
LOW       4

Может кто-нибудь указать, как мне этого добиться?Можно ли написать фрагмент кода, чтобы мои выходные данные всегда отображали значения для HIGH, MEDIUM и LOW, независимо от того, как распределяются данные?(В следующий раз, когда я загружаю данные, может оказаться, что вместо СРЕДНЕГО значения нет ВЫСОКИХ)

Ответы [ 2 ]

7 голосов
/ 24 марта 2019

Одно быстрое исправление reindex

df.Column.value_counts().reindex(list,fill_value=0)
HIGH      3
MEDIUM    0
LOW       4
Name: Column, dtype: int64

Другой способ pd.Categorical

pd.Categorical(df.Column,list).value_counts()
HIGH      3
MEDIUM    0
LOW       4
dtype: int64
0 голосов
/ 24 марта 2019

Попробуйте ниже, сначала создается пустая серия, а затем объединяется с серией value_counts:

pd.Series(0, index=list).combine(df.value_counts(), max)

...