以字符串为单位进行计数,并存储映射到其他数值中。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以字符串为单位进行计数,并存储映射到其他数值中。相关的知识,希望对你有一定的参考价值。

我有一个pandas数据框架,其中包括这样的列(其中包括),RATING是整数0到5,COMMENT是字符串。

RATING   COMMENT
1        some text
2        more text
3        other text
...      ...

我现在想 开采 (缺乏更好的词)的关键词的字符串列表。

list = ['like', trust', 'etc etc etc']

我想通过comment进行迭代,并通过评级计算关键词的数量,得到一个df,就像这样。

KEYWORD     RATING     COUNT
like        1          202
like        2          325
like        3          0
like        4          967
like        5          534
...
trust       1          126
....

我怎样才能做到这一点?

我是初学者,所以真的很感谢你的帮助(越简单越好理解)。

谢谢

嗨,目前我一直在手动迭代,即

#DATA_df is the original data

word_list = ['word', 'words', 'words', 'more']
values = [0] * len(word_list)
tot_val=[values]*5
rating_table = pd.DataFrame(tot_val, columns=word_list)

for i in len(word_list):
    for g in len (DATA_df[COMMENT]):
            if i in DATA_df[COMMENT][g]:
                     rating_table[i][DATA_df[RATING]-1] +=1 

这给了一个DF这样的

   word  words  words  more
0     0      0      0     0
1     0      0      0     0
2     0      0      0     0
3     0      0      0     0
4     0      0      0     0

显得非常笨拙,我想把它添加到......。

答案

我成功地解决了这个问题,学到的关键点是使用group by来根据评分预选数据,这样可以将数据切片,并且可以在组中交替使用。此外,使用str.lower()与str.count()相结合也很好。

如果有更多有经验的程序员能告诉我一个更好的解决方案,我将感激不尽,但至少这可以工作。

rating = [1,2,3,4,5]
rategroup = tp_clean.groupby('Rating')

#print (rategroup.groups)

results_list =[]
for w in word_list:
    current = [w]
    for r  in rating:
        stargroup = rategroup.get_group(str(r))
        found = stargroup['Content'].str.lower().str.count(w)
        c = found.sum()
        current.append(c)
    results_list.append(current)

results_df = pd.DataFrame (results_list, columns=['Keyword','1 Star','2 Star','3 Star','4 Star','5 Star'])

有一件事我还在苦恼,那就是如何使用regex来使它寻找完整的单词。我相信\b是正确的,但我如何把它放到str.count函数中?

以上是关于以字符串为单位进行计数,并存储映射到其他数值中。的主要内容,如果未能解决你的问题,请参考以下文章

Excel怎么设置数据以百万单位显示

重复造轮子系列--计数,基数排序

linux命令之排序命令sort命令

字符串和数值

excel 怎么让数字不用科学计数法

Java———较大二进制文件的读写