有没有一种简便的方法可以计算pandas列中的字典值?

时间:2019-08-16 04:55:44

标签: python pandas dictionary counter

我正在尝试计算字典中的值出现在包含词干文本的数据框中的次数。

我用值创建了一个列表,然后将其应用于计数器函数以对每一行中的每个单个值进行计数

dictionary = {'c-1' : ['x', 'y', 'z'], 'c-2' : ['a', 'b']}

words_list = list()
for key in dictionary.keys():
    words_list.append(dictionary[key])
test = [val for sublist in words_list for val in sublist]

from collections import Counter
text['Counter'] = text['Text'].apply(lambda x: Counter([word for word in x if word in test]))

text = {'text':['some text',some text'],'Counter':[Counter({a = 1,x = 2}),Counter({b = 2,y = 4, z = 3})]}

我想显示一列,其中包含每一行的结果。也许我选择了一种大方法。我认为这是直接在字典中工作的直接方法,但我不知道具体如何。

1 个答案:

答案 0 :(得分:0)

IIUC,将collections.Counteritertools.chain一起使用:

from itertools import chain
from collections import Counter

d = {'c-1' : ['x', 'y', 'z'], 'c-2' : ['a', 'b']}
s = pd.Series(['abc', 'xyz', 'abda'])
new_s = s.str.findall('|'.join(chain(*d.values()))).apply(Counter)
print(new_s)

输出:

0            {'b': 1, 'a': 1}
1    {'z': 1, 'x': 1, 'y': 1}
2            {'b': 1, 'a': 2}
dtype: object