根据两列之间的关系创建新键
Create new key based on relationship between two columns
我正在尝试为两列之间的所有相关实例添加一个键,然后创建一个 GroupID
逻辑将是:
- 检查链接到 ID1 的所有 ID2 实例
- 检查链接到 (1) 中找到的 ID2 的所有 ID1 实例
- 重复直到找到所有关系
让我们试试 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
我正在尝试为两列之间的所有相关实例添加一个键,然后创建一个 GroupID
逻辑将是:
- 检查链接到 ID1 的所有 ID2 实例
- 检查链接到 (1) 中找到的 ID2 的所有 ID1 实例
- 重复直到找到所有关系
让我们试试 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