GroupBy所有可能的排列

时间:2017-05-05 21:51:45

标签: python pandas group-by

示例数据集列:[“A”,“B”,“C”,“D”,“num1”,“num2”]。所以我有6列 - 前4个用于分组,最后2个是数字,并且将根据groupBy语句计算平均值。 我想分组4个分组列的所有可能组合。 我希望避免明确地键入所有可能的groupBy,例如groupBy [“A”,“B”,“C”,“D”],然后groupBy [“A”,“B”,“D”,“C”]等。 我是Python的新手 - 在python中如何在循环中自动化组,以便为​​所有可能的组合执行groupBy计算 - 在这种情况下4 * 3 * 2 * 1 = 24种组合? TA

到目前为止,感谢您的帮助。知道为什么'a ='部分不起作用?

import itertools
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,10,size=(100, 5)), columns=list('ABCDE'))
group_by_vars = list(df.columns)[0:4]
perms = [perm for perm in itertools.permutations(group_by_vars)]
print list(itertools.combinations(group_by_vars,2))
a = [x for x in itertools.combinations(group_by_vars,group_by_n+1) for group_by_n in range(len(group_by_vars))]

a没有错误我只是得到一个空对象。为什么??? 类似于[在itertools.com中进行梳理(group_by_vars,2)]这样的东西很容易但是如何在范围内为len_ool_by中的group_by_n获取a = [x for itertools.com中的x(group_by_vars,group_by_n + 1)(len(group_by_vars)) ] ...

2 个答案:

答案 0 :(得分:0)

当您按['A', 'B', 'C', 'D']分组并计算平均值时,您将获得一个平均值为(a0, b0, c0, d0)的特定群组m0

当您按['A', 'B', 'D', 'C']排列列和分组时,您将获得一个平均值为(a0, b0, d0, c0)的特定群组m0

事实上那些m0是相同的。所有小组都是一样的。您将为每个排列重复相同的精确计算...您只需要4个!订购元组的方法......为什么?

答案 1 :(得分:0)

ubuntu@foobar:~/dev/abc$ npm install @ionic/app-scripts@latest --save-dev
npm WARN deprecated object-keys@0.2.0: Please update to the latest object-keys
ionic-app-base@0.0.0 /home/ubuntu/dev/abc
└── @ionic/app-scripts@1.3.7 

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents):

npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.1: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
然后,

perms将列出所有可能的24种排列