我有一个双语法例词典,其创建为
self.bigram_counts = defaultdict(lambda: Counter())
2个来自self.bigram_counts的示例行:
[(None, Counter({'de': 1})),
('de', Counter({'la': 7839,filtradojardin': 1,'cantera': 236})))]
尝试按以下方式将其加载到数据帧中似乎无效:
bigrams2 = pd.DataFrame.from_dict(list((vocab.bigram_counts.keys(),
vocab.bigram_counts.values().keys()),
vocab.bigram_counts.values().values()))
我想从此数据帧中取出两列,一列包含完整的二元组,一列包含计数。在这种情况下,调用pd.DataFrame的最佳方法是什么?
以前,我使用过:
bigrams = pd.DataFrame.from_dict(list(vocab.bigram_counts.items()))
bigrams.columns = [['word(s)', 'count(s)']]
bigrams.head()
可以工作,但为count列提供一个计数器对象。我不认为.melt()就在这里,但是也许可以使用类似的东西?
所需的输出:
0 1
0 None, de 1
1 de, la 7839
2 de, filtradojardin 1
3 de, cantera 236
答案 0 :(得分:1)
我会做这样的事情:
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)
我的机器在示例中为两行输出以下内容:
0 1 2
0 None de 1
1 de la 7839
2 de filtradojardin 1
3 de cantera 236