2017-01-04 147 views
1

總結多行大熊貓

df = pd.DataFrame({'a': [1,2,1,3,4,2], 'c':['dd','ee','dd','as','ae','ee'], 'count':[5,9,1,6,8,3]})

a c count 
0 1 dd  5 
1 2 ee  9 
2 1 dd  1 
3 3 as  6 
4 4 ae  8 
5 2 ee  3 

正如你可以看到有在列重複「A」 1 and 2重複多次考慮這個數據幀。

我想總結一下這樣的熊貓,就像在sql中我們做groupby一樣。

我最後的DF應該是這樣的

a c count 
0 1 dd  6 
1 2 ee  12 
2 3 as  6 
3 4 ae  8 

我嘗試用 df = df.groupby('a'),但它返回我

<pandas.core.groupby.DataFrameGroupBy object 

回答

1

您需要通過agroupbyc與聚集sum

df = df.groupby(['a','c'], as_index=False)['count'].sum() 
print (df) 
    a c count 
0 1 dd  6 
1 2 ee  12 
2 3 as  6 
3 4 ae  8 

但是,如果只需要groupby列a,那麼需要輸出的所有列 - 例如aggregatecfirstcount的總量,除以sum

df = df.groupby('a').agg({'c':'first', 'count':'sum'}).reset_index() 
print (df) 
    a c count 
0 1 dd  6 
1 2 ee  12 
2 3 as  6 
3 4 ae  8 
3

你幾乎擁有了

df.groupby(['a', 'c']).sum().reset_index() 

產生

a c count 
0 1 dd  6 
1 2 ee  12 
2 3 as  6 
3 4 ae  8