如何明确指定每个列应该在pandas中属于哪个组?

Kat*_*ara 1 pandas pandas-groupby

我有数据框以及以下列.

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

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

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

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

jez*_*ael 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
Run Code Online (Sandbox Code Playgroud)

lists中创建组的字典,然后使用扁平化的dicts理解中的值交换键:

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
Run Code Online (Sandbox Code Playgroud)