我有一个看起来像这样的数据框
col1 col2 col3 col4 .... col90
row1 1 2 3 4 .... 90
row2 91 92 93 94 ..... 180
......
row1000 1001 1002 1003 1004 .... 1090
我想一次将列分为3组,并取每一行的平均值。
我按如下操作:
我生成列表列表
[['col1','col2','col3], ['col4','col5','col6']....
['col88','col89','col90']]
我想使用此列表列表从数据框中选择这些列,并为每一行计算平均值,并生成具有原始行和三分之一列数的结果数据框(数据一次聚合三列) )。
我认为正确的方法是使用列名进行分组,然后进行聚合,但是我不确定如何进行。我想避免循环。我该怎么做?谢谢。
答案 0 :(得分:1)
将groupby
与//
一起使用
df.groupby((df.columns.str[3:].astype(int)-1)//3,axis=1).sum()
Out[323]:
0 1 29
row1 6 4 90
row2 276 94 180