我正在使用pandas和groupby
进行汇总。我正在做以下事情:
data = {'ac' : ['a','a','a','a','a','a','a','a','b','b','b','b','b'],
'cls' ['wwww','wwww','wwww','xxxx','xxxx','zzzz','zzzz','yyyy','wwww','xxxx','zzzz','zzzz','yyyy'],
'pl' : [1,1,1,1,1,1,1,1,1,1,1,1,1]}
df = pd.DataFrame(data)
grouped = df.groupby(['ac','cls']).agg({'pl':np.sum})
pl
ac cls
a wwww 3
xxxx 2
yyyy 1
zzzz 2
b wwww 1
xxxx 1
yyyy 1
zzzz 2
有没有办法groupby
填写ac
列,以便它显示如下?
pl
ac cls
a wwww 3
a xxxx 2
a yyyy 1
a zzzz 2
b wwww 1
b xxxx 1
b yyyy 1
b zzzz 2
答案 0 :(得分:3)
您想要重置索引:
import pandas as pd
import numpy as np
data = {'ac': ['a','a','a','a','a','a','a','a','b','b','b','b','b'],
'cls': ['wwww','wwww','wwww','xxxx','xxxx','zzzz','zzzz','yyyy','wwww','xxxx','zzzz','zzzz','yyyy'],
'pl': [1,1,1,1,1,1,1,1,1,1,1,1,1]}
df = pd.DataFrame(data)
grouped = df.groupby(['ac','cls']).agg({'pl':np.sum})
grouped.reset_index(inplace=True)
print grouped
打印:
ac cls pl
0 a wwww 3
1 a xxxx 2
2 a yyyy 1
3 a zzzz 2
4 b wwww 1
5 b xxxx 1
6 b yyyy 1
7 b zzzz 2
答案 1 :(得分:2)
您清楚地显示左侧的项目位于索引中,如右侧列标题的位置所示。
这是通过名为display.multi_sparse
的pandas选项控制的。您可以使用pd.set_option('display.multi_sparse', False)
将其关闭,也可以使用pd.option_context
with pd.option_context('display.multi_sparse', False):
print(grouped)
pl
ac cls
a wwww 3
a xxxx 2
a yyyy 1
a zzzz 2
b wwww 1
b xxxx 1
b yyyy 1
b zzzz 2
答案 2 :(得分:0)
使用In [748]: df.groupby(['ac', 'cls'], as_index=False).agg({'pl': np.sum})
Out[748]:
ac cls pl
0 a wwww 3
1 a xxxx 2
2 a yyyy 1
3 a zzzz 2
4 b wwww 1
5 b xxxx 1
6 b yyyy 1
7 b zzzz 2
{{1}}