简体   繁体   中英

All possible permutations within groups of column pandas

I have a df

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

Within groups, grouped by 'a' and 'b' I want all possible permutations of 'c'

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

I tried:

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

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

Explode() only does not do what I need, since I need all combinations of groups within subgroups.

For example in this case there are 2 different ways to combine rows 1 and 2. If row 2 would have been 2 different permutations, it would be 2*2=4 ways.

Does anybody have an idea?

Fix your code with groupby and explode

s=pd.Series({x: list(itertools.permutations(y) )for x , y in  df.groupby('a').b}).explode().explode().reset_index()
    index  0
0       0  1
1       0  2
2       0  3
3       0  1
4       0  3
5       0  2
6       0  2
7       0  1
8       0  3
9       0  2
10      0  3
11      0  1
12      0  3
13      0  1
14      0  2
15      0  3
16      0  2
17      0  1
18      1  1
19      1  2
20      1  2
21      1  1

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM