现在,我的计数器看起来像这样:
(('you', 'call'), 3.2875047316896584): 1,
(('bonus', 'offer'), 5.880001319229578): 1,
(('without', 'warranty'), 10.11244740522995): 1
我正在尝试将这些值传递给具有三列,Bigrams,得分和频率的Pandas DF
例如,使用上面的第一个值,我的预期DF看起来像
Bigrams Score Frequency
you call 3.2875047316896584 1
我正在尝试使用这段代码,但它一直给我一个错误
c = Counter()
frequencies = [[" ".join(k),v,d] for k,v,d in c]
frame = pd.DataFrame(frequencies, columns=['Bigrams','Score','Frequency'])
然而,这一直在说:值错误:需要超过2个值才能解压缩。我做错了什么?
答案 0 :(得分:1)
您正在使用键和值。迭代字典(映射)只产生密钥。使用dict.items
使其产生两者。
并且正确使用元组解包。它应匹配产生的项目。
>>> from collections import Counter
>>> import pandas as pd
>>>
>>> c = Counter({
... (('you', 'call'), 3.2875047316896584): 1,
... (('bonus', 'offer'), 5.880001319229578): 1,
... (('without', 'warranty'), 10.11244740522995): 1
... })
>>> frequencies = [[" ".join(k),v,d] for (k, v), d in c.items()]
>>> frame = pd.DataFrame(frequencies, columns=['Bigrams','Score','Frequency'])
>>> print(frame)
Bigrams Score Frequency
0 bonus offer 5.880001 1
1 without warranty 10.112447 1
2 you call 3.287505 1