根据两列之间的关系创建新键

Create new key based on relationship between two columns

我正在尝试为两列之间的所有相关实例添加一个键,然后创建一个 GroupID

逻辑将是:

  1. 检查链接到 ID1 的所有 ID2 实例
  2. 检查链接到 (1) 中找到的 ID2 的所有 ID1 实例
  3. 重复直到找到所有关系

让我们试试 networkx

import networkx as nx
G=nx.from_pandas_edgelist(df, 'ID1', 'ID2')
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()}
df['new'] = df['ID1'].map(d)
df
Out[302]: 
  ID1  ID2  new
0   A    1    0
1   A    2    0
2   B    1    0
3   B    3    0
4   C    4    1
5   C    5    1
6   D    2    0