如何指定每个列应明确属于熊猫的组?

时间:2018-08-20 14:30:20

标签: pandas pandas-groupby

我有以下几列的数据框。

  

[A,B,C,D,E,F,G ...]

我想为此数据框使用groupby方法,如下所示指定每列应属于哪个组。

  

group1 = [A,C,D,G ...]
  group2 = [B,E,F ...]

我可以找到一些页面来解释如何在条件下使用groupby。但是找不到适合这个问题的答案。
谁能告诉我如何实现这种逻辑?

3 个答案:

答案 0 :(得分:6)

我认为需要:

df = pd.DataFrame({'A':[4,5,4,5,5,4],
                   'B':[4,5,4,5,5,4],
                   'C':[7,8,9,4,2,3],
                   'D':[1,3,5,7,1,0],
                   'E':[5,3,6,9,2,4],
                   'F':[4,5,4,5,5,4],
                   'G':[4,5,4,5,5,4]})

print (df)
   A  B  C  D  E  F  G
0  4  4  7  1  5  4  4
1  5  5  8  3  3  5  5
2  4  4  9  5  6  4  4
3  5  5  4  7  9  5  5
4  5  5  2  1  2  5  5
5  4  4  3  0  4  4  4

list s中创建组字典,然后将键与平整的dict理解中的值交换:

d = {'g1':['A','C','D','G'], 'g2':['B','E','F']}
d1 = {k: oldk for oldk, oldv in d.items() for k in oldv}
print (d1) 
{'A': 'g1', 'C': 'g1', 'D': 'g1', 'G': 'g1', 'B': 'g2', 'E': 'g2', 'F': 'g2'}

df = df.groupby(d1, axis=1).sum()
print (df) 
   g1  g2
0  16  13
1  21  13
2  22  14
3  21  19
4  13  12
5  11  12

答案 1 :(得分:2)

创建定义分组的字典,然后在groupby上的axis=1中使用该字典

m = {
    *dict.from_keys(['A', 'C', 'D', 'G'], 'group1'),
    *dict.from_keys(['B', 'E', 'F'], 'group2'),
}

df.groupby(m, axis=1).mean()

答案 2 :(得分:2)

通过对concat进行for循环

l=[['A', 'C', 'D', 'G'],['B', 'E', 'F']]
pd.concat([df[x].sum(1) for x in l],1)
Out[322]: 
    0   1
0  16  13
1  21  13
2  22  14
3  21  19
4  13  12
5  11  12