2017-08-15 85 views
2

我有一個數據幀,看起來像:大熊貓 - 分割字符串,並採取每對夫婦

  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 

我嘗試了幾種方法,但他們甚至都沒有開始接近我需要的東西。

回答

2

讓我們用combinations從itertools,pd.Seriesstackreset_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