pandas groupby 多列给出了奇怪的索引行为[重复]
Posted
技术标签:
【中文标题】pandas groupby 多列给出了奇怪的索引行为[重复]【英文标题】:pandas groupby multiple columns gives weird index behavior [duplicate] 【发布时间】:2019-11-11 05:31:29 【问题描述】:我有如下数据,有 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
所以我只想不输出头部, 并完成相应列中的元素。
你能给我一些建议吗?
【问题讨论】:
pandas groupby() 默认为as_index=True, group_keys=True
。因此,如果您按多列分组,该默认设置将为您提供不需要的 MultiIndex。设置as_index=False
以获得“SQL 风格”的分组输出(没有时髦的行索引)。
【参考方案1】:
当我们尝试groupby
是我们不希望groupby
键为index
时,我们可以传递给as_index=False
key1_sum = df1.groupby([0,1,2,3,4,5],as_index=False).sum()
【讨论】:
获得相同结果的另一种方法是key1_sum = df1.groupby([0, 1, 2, 3, 4, 5]).sum().reset_index()
。【参考方案2】:
pandas groupby() 默认有as_index=True, group_keys=True
:
as_index=False
以获得“SQL 风格”的分组输出(没有时髦的行索引)
【讨论】:
以上是关于pandas groupby 多列给出了奇怪的索引行为[重复]的主要内容,如果未能解决你的问题,请参考以下文章