【发布时间】: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 风格”的分组输出(没有时髦的行索引)。
标签: python pandas pandas-groupby multi-index