【发布时间】:2021-12-22 09:48:45
【问题描述】:
我有以下数据框:
data = {'words': ['must watch good acting',
'average movie bad acting',
'good movie good acting',
'pathetic avoid',
'avoid'], 'dates': ['2020-01-01','2020-01-01','2020-01-02','2020-01-02', '2020-01-03']}
df = pd.DataFrame.from_dict(data)
我想创建数据帧的二元组以及它们出现的数据帧中每个日期的计数。 bi-gram 是 2 个单词。
所以我想得到这样的最终结果表:
| bi-gram | count | date |
|---|---|---|
| must watch | 1 | '2020-01-01' |
| watch good | 1 | '2020-01-01' |
| good acting | 1 | '2020-01-01' |
| average movie | 1 | '2020-01-01' |
| movie bad | 1 | '2020-01-01' |
| bad acting | 1 | '2020-01-01' |
| good movie | 1 | '2020-01-02' |
| movie good | 1 | '2020-01-02' |
| good acting | 1 | '2020-01-02' |
| pathetic avoid | 1 | '2020-01-02' |
从上面可以看出,二元组good acting的计数为1,但重复两次,每次出现一次。
或者有没有一种方法可以产生总和?所以我们的值出现为 2 并且只出现一行,可能嵌套了两个日期 - 尽管这可能很难绘制?
生成 n-gram 的代码如下:
from nltk import ngrams
sentence = 'test sentence'
# set n =2 for bi grams
n = 2
bigrams = ngrams(sentence.split(), n)
print(list(bigrams))
上面的代码给了我二元组,但我被困在如何转换数据以获得这些二元组的出现次数以及日期。
感谢任何帮助。
【问题讨论】: