系列对象到堆叠数据框

时间:2020-05-17 15:11:43

标签: python pandas

我有一个df

   a  b  c                     
1  0  2  1
2  0  2  2
3  0  3  2
4  1  1  7

首先,我尝试在a和b的grupby中获取c的所有排列

s=pd.Series({x: list(it.permutations(y) )for x , y in  df.groupby(['a','b']).c})
s.to_frame()

      0                     
0  2  [(1,2),(2,1)]
   3  [(2,)]   
1  1  [(7,)]

我基本上想堆叠df,但是由于例如在第1行中有两个可能的元组,我希望在'a'组中的所有可能的组合:

   a  b  c                    
1  0  2  1
   0  2  2
   0  3  2  
2  0  2  2
   0  2  1
   0  3  2 
3  1  1  7

因为我需要所有组合,所以explode()不能按我的要求工作。

1 个答案:

答案 0 :(得分:0)

s保留为pd.series,然后爆炸两次,

df = s.explode().explode().rename_axis(['a', 'b']).reset_index(name='c')

输出

    a   b   c
0   0   2   1
1   0   2   2
2   0   2   2
3   0   2   1
4   0   3   2
5   1   1   7