2014-09-22 90 views
0

創建三個欄現在,我的櫃檯看起來是這樣的:從櫃檯

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

我想這些值傳遞到熊貓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個值才能解包。我究竟做錯了什麼?

回答

1

您正在使用鍵和值。迭代一個字典(映射)只產生鍵。使用dict.items使其產生兩者。

然後,使用tuple正確解壓。它應該匹配項目產生。

>>> 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