这是一个庞大数据集的子集,我希望ID-2列中直接或间接链接到ID-1中的1的所有数字都分组在1旁边,与2相同,以此类推。
ID1 ID2
0 1 2
1 1 4
2 2 6
3 2 5
4 3 7
:
ID1 ID2
0 1 2
1 4
2 6
3 5
4 3 7
可以使用布尔索引:
# map ID2 values to ID1 or keep ID1
s = df['ID1'].map(df.set_index('ID2')['ID1']).fillna(df['ID1'])
# mask duplicated values
df.loc[s.duplicated(), 'ID1'] = ''
输出:
ID1 ID2
0 1 2
1 4
2 6
3 5
4 3 7
如果你想要一个新的列:
s = df['ID1'].map(df.set_index('ID2')['ID1']).fillna(df['ID1'])
df['new'] = df['ID1'].mask(s.duplicated(), '')
输出:
ID1 ID2 new
0 1 2 1
1 1 4
2 2 6
3 2 5
4 3 7 3