2014-09-22 3 views
0

에서 세 개의 열을 만들고, 내 카운터는 다음과 같습니다지금 카운터

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

나는 세 개의 열, Bigrams, 점수 및 주파수

와 팬더 DF로이 값을 전달하려고 그래서 예를 들어, 위의 첫 번째 값을 사용하여, 나는 그렇게 할 코드의이 비트를 사용하는 것을 시도하고있다

Bigrams  Score     Frequency 
you call  3.2875047316896584   1 

처럼 내 예상 DF 보인다, 그러나 그것은 나에게 오류

를주는 유지
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을 사용하면 둘 다 산출됩니다.

그리고 튜플의 포장을 올바르게 사용하십시오. 그것은 산출물과 일치해야합니다.

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