熊猫 - 分裂字符串,并采取每对夫妇

时间:2017-08-15 15:29:52

标签: python pandas combinatorics itertools

我有一个类似的数据框:

         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

我尝试了几种方法,但它们都没有开始接近我需要的东西。

1 个答案:

答案 0 :(得分:2)

让我们使用来自itertools,combinationspd.Seriesstack的{​​{1}}:

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)