我的输入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_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在特定组上工作?我尝试使用相同的类型合并列标题,但无济于事。
编辑:我选择的答案解决了这个问题。但是,我还有一个问题。当我从答案中添加代码时,生成的分组数据框的列全部乱序。有没有办法保存列名的顺序?谢谢!
答案 0 :(得分:1)
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