#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. Идеально! Спасибо