熊猫groupby多列给出奇怪的索引行为

时间:2019-06-29 20:43:11

标签: python pandas pandas-groupby multi-index

我有如下数据,共有7列。我想合并第1-6列中具有相同值的所有行,并对相应的第7列数据求和。

0.1  0.2  0.3  0.1  0.2  0.3  0.001
0.1  0.2  0.3  0.1  0.2  0.3  0.002
0.9  0.9  0.9  0.1  0.1  0.1  0.002
0.9  0.9  0.9  0.8  0.8  0.8  0.1 
0.9  0.9  0.9  0.8  0.8  0.8  0.2 
0.1  0.2  0.3  0.1  0.2  0.3  0.001
0.1  0.2  0.3  0.1  0.1  0.1  0.002
0.9  0.9  0.9  0.1  0.1  0.1  0.002

我尝试过以下代码:

import pandas as pd

df1 = pd.read_csv('test-data',sep='\s+',header=None,engine='python')
key1_sum = df1.groupby([0,1,2,3,4,5]).sum()

print(key1_sum)

我希望得到以下输出:

0.1 0.2 0.3 0.1 0.1 0.1  0.002
0.1 0.2 0.3 0.1 0.2 0.3  0.004
0.9 0.9 0.9 0.1 0.1 0.1  0.004
0.9 0.9 0.9 0.8 0.8 0.8  0.300

...但是我实际上得到了以下输出:

                             6
0   1   2   3   4   5         
0.1 0.2 0.3 0.1 0.1 0.1  0.002
                0.2 0.3  0.004
0.9 0.9 0.9 0.1 0.1 0.1  0.004
            0.8 0.8 0.8  0.300

所以我只想不输出头部, 并完成相应列中的元素。

您能给我一些建议吗?

2 个答案:

答案 0 :(得分:4)

当我们尝试groupby时,我们不希望将groupby键设为index时,可以传递给as_index=False

key1_sum = df1.groupby([0,1,2,3,4,5],as_index=False).sum()

答案 1 :(得分:0)

pandas groupby()默认具有as_index=True, group_keys=True

  • 因此,如果您按多列进行分组,则默认设置将为您提供(通常是不需要的)MultiIndex
  • 设置as_index=False以获取“ SQL样式”分组输出(没有时髦的行索引)