我正在尝试计算字典中的值出现在包含词干文本的数据框中的次数。
我用值创建了一个列表,然后将其应用于计数器函数以对每一行中的每个单个值进行计数
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})]}
我想显示一列,其中包含每一行的结果。也许我选择了一种大方法。我认为这是直接在字典中工作的直接方法,但我不知道具体如何。
答案 0 :(得分:0)
IIUC,将collections.Counter
与itertools.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