3 回答
TA贡献1820条经验 获得超9个赞
Series.str.findall
在列上使用text
查找所有主题标签词,然后使用Series.explode
+ Series.value_counts
:
counts = df['text'].str.findall(r'(#\w+)').explode().value_counts()
Series.str.split
使用+的另一个想法DataFrame.stack
:
s = df['text'].str.split(expand=True).stack() counts = s[lambda x: x.str.startswith('#')].value_counts()
结果:
print(counts)
#hello 3
#dog 1
#colours 1
#ello 1
#goodMorning 1
#goodbye 1
Name: text, dtype: int64
TA贡献1847条经验 获得超7个赞
使用它的一种方法是从结果中str.extractall
删除。#
那么value_counts
也
s = df['text'].str.extractall('(?<=#)(\w*)')[0].value_counts()
print(s)
hello 3
colours 1
goodbye 1
ello 1
goodMorning 1
dog 1
Name: 0, dtype: int64
TA贡献1802条经验 获得超10个赞
一个稍微详细的解决方案,但这可以解决问题。
dictionary_count=data_100.TicketDescription.str.split(expand=True).stack().value_counts().to_dict()
dictionary_count={'accessgtgtjust': 1,
'sent': 1,
'investigate': 1,
'edit': 1,
'#prd': 1,
'getting': 1}
ert=[i for i in list(dictionary_count.keys()) if '#' in i]
ert
Out[238]: ['#prd']
unwanted = set(dictionary_count.keys()) - set(ert)
for unwanted_key in unwanted:
del dictionary_count[unwanted_key]
dictionary_count
Out[241]: {'#prd': 1}
添加回答
举报