首页 > 解决方案 > 返回列中单词的频率及其关联的行

问题描述

我有一个数据集,其中包含一个包含句子的文本列和一个 ID 列。我能够计算每个单词在文本列中重复多少次的频率data.text.str.split(expand=True).stack().value_counts()。但我的目标是提取词频以及与该词关联的 id 列。

输入 :

文本 ID
他最好的工作感动 1
失业的坏季节 1
最佳方式保证金 2
沮丧的失业者 3

所需的输出:

单词 频率 ID
最好的 2 1
最好的 2 2
沮丧的 1 1
失业者 2 1
失业者 2 3
坏的 1 1

标签: pythonstringnlpanalyticsfrequency

解决方案


您确定要复制输出中的总频率吗?无论哪种方式,其中一个表wordids,freqs_dfoutput应该能够帮助您:

g = df['text'].str.split(expand=True)
g['id'] = df['id']
wordids = g.melt(id_vars=['id']).dropna()[['id', 'value']]
freqs = wordids['value'].value_counts()
freqs_df = pd.DataFrame({'value': freqs.index, 'freq': freqs.values})
output = pd.merge(wordids, freqs_df, on='value')
print(output)

输入:

df = pd.DataFrame({
    'id': [1, 1, 2, 3],
    'text': ['He best work move happy', 'unemployed bad season',
             'best way margin', 'frustated unemployed']
})

输出:

    id       value  freq
0    1          He     1
1    1  unemployed     2
2    3  unemployed     2
3    2        best     2
4    1        best     2
5    3   frustated     1
6    1         bad     1
7    2         way     1
8    1        work     1
9    1      season     1
10   2      margin     1
11   1        move     1
12   1       happy     1

推荐阅读