使用python dataframe时,如何对列进行分组?

使用python dataframe时,如何对列进行分组?,python,pandas,dataframe,Python,Pandas,Dataframe,我的输入excel(xlsx)文件的格式如下: mz n n n n g_1 g_1 g_2 g_2 g_2 1 2 3 4 5 6 7 8 8 8 1 2 3 4 5 6 7 8 8 8 1 2

我的输入excel(xlsx)文件的格式如下:

mz     n     n     n     n     g_1     g_1     g_2     g_2     g_2     
1      2     3     4     5     6       7       8       8       8       
1      2     3     4     5     6       7       8       8       8       
1      2     3     4     5     6       7       8       8       8       
1      2     3     4     5     6       7       8       8       8       
当我使用pd.read\u excel读取文件时,它会在每列中添加数字,如:

mz     n     n.1     n.2     n.3     g_1     g_1.1     g_2     g_2.1     g_2.2
1      2     3       4       5       6       7         8       8         8
1      2     3       4       5       6       7         8       8         8      
1      2     3       4       5       6       7         8       8         8   
因此,我无法使用groupby将那些带有“n”、“g_1”等的对象分组。有没有办法让groupby在特定的组上工作?我尝试将列标题与相同的类型合并,但没有成功


编辑:我选择的答案解决了这个问题。不过,我还有一个问题。当我从答案中添加代码时,得到的分组数据帧中的列都是无序的。有没有办法保持列名的顺序?谢谢

IIUC,使用
split
然后在“.”之前的第一部分分组:

df.groupby(df.columns.str.split('.').str[0], axis=1).sum()
输出:

   g_1  g_2  mz   n
0   13   24   1  14
1   13   24   1  14
2   13   24   1  14
其中df为:

   mz  n  n.1  n.2  n.3  g_1  g_1.1  g_2  g_2.1  g_2.2
0   1  2    3    4    5    6      7    8      8      8
1   1  2    3    4    5    6      7    8      8      8
2   1  2    3    4    5    6      7    8      8      8

在我发布我的帖子之前,我确实找到了这篇帖子。这篇文章不适用于我,或者我不知道如何将它应用于我的问题。