2016-04-25 136 views
0

我的数据删除括号是元组的列表:从熊猫数据帧

def find_ngrams(verbatims, n): 
    return zip(*[verbatims[i:] for i in range(n)]) 

bigrams = find_ngrams(verbatims, 4) 
print bigrams 

[((u'a', u'grossir', u'et', u'a'), 74), ((u'un', u'avis', u'de', u'passage'), 68), ((u'le', u'facteur', u'est', u'pass\xe9'), 67), ((u'V\xeatements', u'+', u'ou', u'-'), 63), ((u'+', u'ou', u'-', u'similaires'), 62), ((u'vous', u'ne', u'pouvez', u'pas'), 54), ((u'sinon', u'une', u'petite', u'recherche'), 53)]

有序的和使用计数器()中计数most_common()方法:

ngrams = Counter(bigrams).most_common() 

FIY我正在对大型文本数据进行n-gram分析。对于n元信息:https://en.wikipedia.org/wiki/N-gram 我有熊猫阴凉数据帧:

DF = pandas.DataFrame(ngrams) 
DF.columns = ['ngram','occurence'] 
print DF 
               ngram occurence 
0        (a, grossir, et, a)   74 
1       (un, avis, de, passage)   68 
2       (le, facteur, est, passé)   67 

除了我正克用括号括起来的,我不希望出现这种情况。我知道我可以使用基本的搜索/替换方法,但我希望以更加计算机科学的逻辑方式来完成。此外,如果我进行搜索/替换,我可能会在文本中丢失一些括号。

我不确定这里有什么确切的问题,但我想它与我的列表中的嵌套元组有关。那么,如何将一个元组列表添加到数据框中,而不需要使用括号?

编辑:根据要求,这里是我的预期输出:

           ngram occurence 
0         a, grossir, et, a   74 
1        un, avis, de, passage   68 
2       le, facteur, est, passé   67 

感谢,

+1

什么是你期望的输出?你要求的是不明确的,没有提到。 –

+0

我用我的预期输出编辑了我的问题。 –

+0

我没有得到相同的结果,只是当我得到DF ...你能重新检查你的数据吗? –

回答

1

你是不是简单地寻找:

In [309]: pd.DataFrame([(','.join(el[0]), el[1]) for el in bigrams]) 
Out[309]: 
          0 1 
0    a,grossir,et,a 74 
1   un,avis,de,passage 68 
2  le,facteur,est,passé 67 
3   Vêtements,+,ou,- 63 
4   +,ou,-,similaires 62 
5   vous,ne,pouvez,pas 54 
6 sinon,une,petite,recherche 53