繁体   English   中英

从柜台创建三列

[英]Create Three Columns from a Counter

现在,我的Counter看起来像这样:

(('you', 'call'), 3.2875047316896584): 1, 
(('bonus', 'offer'), 5.880001319229578): 1, 
(('without', 'warranty'), 10.11244740522995): 1

我正在尝试将这些值传递给具有三列,二元组,得分和频率的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'])

但是,这一直在说:值错误:需要两个以上的值才能解包。 我究竟做错了什么?

您正在使用键和值。 迭代字典(映射)仅产生键。 使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM