панды.DataFrame.value_counts : Как сортировать результаты на основе отдельного списка?

#python #pandas

Вопрос:

У меня есть список меток, метки=[«a», «b», «c», «d»] и фрейм данных, в котором каждая строка состоит из индекса, за которым следует одна из этих букв. Некоторые буквы повторяются, в то время как другие могут даже не появляться. Я ищу лучший способ составить список из четырех чисел, где каждая запись подсчитывает количество вхождений буквы и где порядок прописан этикетками.

 import pandas as pd
labels=['a','b','c','d']
occurrences=['d','d','b','c','b','d','b','c','c','d','b','d'] 
#Observe that 'a' never appears.
df = pd.DataFrame(occurrences,columns=['occurences'])
counts=df['occurences'].value_counts()
 

Здесь подсчеты приведут к ряду (?), столбцами которого являются b,d, c и 5,4,3. Что мне нужно, так это список
[0,5,3,4]

Ответ №1:

Вы можете reindex вернуть серию, value_counts :

 In [337]: counts.reindex(labels).fillna(0).astype(int)
Out[337]:
a    0
b    4
c    3
d    5
Name: occurences, dtype: int32
 

Если вам просто нужны значения, вы можете привести их в список:

 In [339]: list(counts.reindex(labels).fillna(0).astype(int))
Out[339]: [0, 4, 3, 5]
 

Комментарии:

1. Идеально! Спасибо