首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以计数器字典(多个键)作为2列数据的字典

以计数器字典(多个键)作为2列数据的字典
EN

Stack Overflow用户
提问于 2018-12-13 23:34:07
回答 1查看 179关注 0票数 0

我有一本比格字典,它创建为

代码语言:javascript
复制
self.bigram_counts = defaultdict(lambda: Counter())

来自self.bigram_counts的2行示例:

代码语言:javascript
复制
 [(None, Counter({'de': 1})),
 ('de', Counter({'la': 7839,filtradojardin': 1,'cantera': 236})))]

试图将其加载到dataframe中似乎没有效率,如下所示:

代码语言:javascript
复制
bigrams2 = pd.DataFrame.from_dict(list((vocab.bigram_counts.keys(), 
                                       vocab.bigram_counts.values().keys()), 
                                       vocab.bigram_counts.values().values()))

我想要两列从这个数据,一个与完整的比格,和一个与计数。在这种情况下,调用pd.DataFrame的最佳方式是什么?

以前,我用过:

代码语言:javascript
复制
bigrams = pd.DataFrame.from_dict(list(vocab.bigram_counts.items()))
bigrams.columns = [['word(s)', 'count(s)']]
bigrams.head()

它工作,但为count列提供了一个计数器对象。我不认为.melt()就在这里,但是也许可以使用类似的东西?

期望产出:

代码语言:javascript
复制
     0    1
0    None, de            1
1    de, la           7839
2    de, filtradojardin  1
3    de, cantera       236
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-14 03:49:01

我会这样做:

代码语言:javascript
复制
flat_bigram_counts = (
    (word1, word2, count)
    for word1, counter in bigram_counts
    for word2, count in counter.items()
)
df = pd.DataFrame.from_records(flat_bigram_counts)

我的机器为示例中的两行输出以下内容:

代码语言:javascript
复制
      0               1     2
0  None              de     1
1    de              la  7839
2    de  filtradojardin     1
3    de         cantera   236
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53771601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档