使用python dataframe时,如何对列进行分组?
我的输入excel(xlsx)文件的格式如下:使用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
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
在我发布我的帖子之前,我确实找到了这篇帖子。这篇文章不适用于我,或者我不知道如何将它应用于我的问题。