Итерация по 2 колонкам DF ссылок и группировка всех связанных ссылок - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть датафрейм с 2 столбцами данных. Оба столбца являются тегами идентификаторов, и каждая строка показывает связь между двумя идентификаторами. Однако в другой строке может быть один и тот же тег ID, который будет указывать на наличие 3-й / 4-й / 5-й ссылки et c. Я хочу показать в одной строке или через номер группы все идентификаторы, которые связаны между собой.

Вот пример ввода: Пример ввода

I хотите создать новый фрейм данных, например: Пример вывода

Итак, a, b, c и d связаны между собой как группа 1.

d , e и f все связаны вместе как группа 2.

Если бы кто-нибудь мог показать мне способ сделать это, я был бы очень признателен.

import pandas as pd
import os

folder = ''
file = ''
input_file = os.path.join(folder, file)
df1 = pd.read_excel(input_file)
df2 = pd.DataFrame()

data = []
n=0 # this becomes the group number
for index, row in df1.iterrows():
    if index == 0:
        data.append([row["NAME1"], row['NAME2'], n])
        n=n+1
        continue
    for i in data:
        if row["NAME1"] == i[0] or row["NAME1"] == i[1] or ["NAME2"] == i[0] or row["NAME2"] == i[1]:
            data.append([row["NAME1"], row['NAME2'], i[2]])
        else:
            data.append([row["NAME1"], row['NAME2'], n])
            n=n+1

df3 = pd.DataFrame(data, columns=['NAME1', 'NAME2', 'Link'])
print(df3)

Это было то, куда я попал прежде чем понять, мне нужна помощь. Я попытался создать вложенный l oop, который взял первый ряд ссылок и назначил им номер группы. Если в любых последующих строках один из идентификаторов уже присутствует в списке, он помечает его тем же номером группы. Если в списке нет совпадений, то назначается новый номер группы.

...