遍历链接的2列DF并将所有相关链接分组

时间:2020-04-22 18:49:19

标签: pandas dictionary nested-loops

我有一个包含2列数据的数据框。两列都是ID标签,每一行都显示两个ID之间存在链接。但是,另一行可能具有相同的ID标签之一,这表明存在第3/4/4/5等链接。 我想将所有链接在一起的ID都显示为一行或通过组号显示。

以下是输入示例: Input Example

我想创建一个新的数据框,如下所示: Output Example

因此,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)

这是我意识到需要帮助之前必须去的地方。我试图创建一个嵌套循环,该循环使用链接的第一行并为它们分配一个组号。如果任何后续行的列表中已经有一个ID,它将使用相同的组号对其进行标记。如果列表中没有匹配项,则会为其分配一个新的组号。

0 个答案:

没有答案