Группировать строки, содержащие хотя бы один общий элемент в списке из одного столбца, и объединять другой столбец. ⇐ Python

Программы на Python
Anonymous
Группировать строки, содержащие хотя бы один общий элемент в списке из одного столбца, и объединять другой столбец.

Сообщение Anonymous »

У меня есть фрейм данных с 1 столбцом, содержащим элемент списка, и 1 столбцом с целым числом. Я хотел бы сгруппировать все списки, которые имеют хотя бы один общий элемент, а затем объединить другой столбец.

Код: Выделить всё

import pandas as pd
import json
import networkx as nx

data = {'lot': [['6309025'],
['6309025', '6375538', '6375540'],
['6410558'], ['6314113']],
'count': [1, 2, 3, 3]}

df = pd.DataFrame(data)

df['id'] = df.index
df = df.explode('lot')

G = nx.from_pandas_edgelist(df, 'lot', 'id')

l = list(nx.connected_components(G))

L = [dict.fromkeys(y, x) for x, y in enumerate(l)]

d = {k: v for d in L for k, v in d.items()}

s = df.groupby(df.id.map(d)).lot.apply(set)
Я использовал решение из этого вопроса. Однако я не могу найти способ агрегировать столбец счетчика .
Ожидаемый результат:

Код: Выделить всё

    lot                                             count
0  {6309025, 6410558, 6375540, 6375538}             3
1  {6410558}                                        3
2  {6314113}                                        3
Есть мысли?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -column-an

Вернуться в «Python»