我有一个看起来像这样的数据框:
IDs
Name
John 1,4,8
Eric 2,9,17
Paul 41,72,78,100
我需要从
IDs
中获取所有组合,并将其分配给新的原始文件,因此输出df应该如下所示: IDs
Name
John 1,4
John 1,8
John 4,8
Eric 2,9
Eric 2,17
Eric 9,17
Paul 41,72
Paul 41,78
Paul 41,100
Paul 72,78
Paul 72,100
Paul 78,100
我尝试了几种方法,但是没有一种方法看起来像我需要的。
最佳答案
让我们使用itertools中的combinations
,pd.Series
,stack
和reset_index
:
from itertools import combinations
df.IDs.apply(lambda x:pd.Series(list(combinations(x.split(','),2))))\
.stack()\
.reset_index(level=1, drop=True)
输出:
Name
John (1, 4)
John (1, 8)
John (4, 8)
Eric (2, 9)
Eric (2, 17)
Eric (9, 17)
Paul (41, 72)
Paul (41, 78)
Paul (41, 100)
Paul (72, 78)
Paul (72, 100)
Paul (78, 100)
dtype: object