我有一个包含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,它将使用相同的组号对其进行标记。如果列表中没有匹配项,则会为其分配一个新的组号。