我有一个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()不能按我的要求工作。
答案 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