我有以下几列的数据框。
[A,B,C,D,E,F,G ...]
我想为此数据框使用groupby方法,如下所示指定每列应属于哪个组。
group1 = [A,C,D,G ...]
group2 = [B,E,F ...]
我可以找到一些页面来解释如何在条件下使用groupby。但是找不到适合这个问题的答案。
谁能告诉我如何实现这种逻辑?
答案 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