屏蔽跨两列的链接数据



这是一个庞大数据集的子集,我希望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

最新更新