словарь со счетчиком словарь (несколько ключей) в виде двух столбцов данных - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть словарь биграмм, который был создан как

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

Я хотел бы 2 столбца из этого кадра данных, один с полной биграммой, а другой с количеством.Каков наилучший способ вызова 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

1 Ответ

0 голосов
/ 14 декабря 2018

Я бы сделал что-то вроде этого:

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