У меня довольно большой DataFrame (несколько тысяч строк) с двумя столбцами: идентификатором и объектом Counter для тегов, связанных с идентификатором. Счетчик подсчитывает, сколько раз элемент был связан с этим конкретным тегом.
Каждый элемент может иметь разные теги, а общее количество тегов также составляет тысячи.
Пример:
df = pd.DataFrame([[1, Counter({'a': 4, 'b': 2})],
[2, Counter({'b': 1, 'c': 3})],
[3, Counter({'a': 3, 'c': 5, 'd': 1})]],
columns=['ID', 'count'])
Моя цель - получить матрицу подсчета тегов, аналогичную той, которую я получу при использовании CountVectorizer () для текста.
Мои ограниченные знания побудили меня написать это код:
# Create empty list
list = []
# iterate trough DataFrame
for item in df.itertuples():
table = pd.DataFrame.from_dict(item.count, orient='index').reset_index()
table.columns = ['tag', item.ID]
list.append(table)
tag_table = pd.concat(list, sort=False)
Но на самом деле это не работает.
Ну, это может сработать, но все еще обрабатывается, так как append и concat общеизвестно медленны.
Как можно Я решаю проблему более эффективно?
Спасибо!