2016-07-29 103 views
0

我有這些列的事務表:CUSTOMER_ID,TRANSACTION_ID,月熊貓 - 不同聚合爲一個場

我想寫這將是相當於SQL下面的查詢:

SELECT min(month) as first_month, max(month) as last_month 
FROM transactions 
GROUP BY customer_id 

在熊貓,看來我只能彙總每列一次,如下面的查詢將返回僅一個月列:

transactions.groupby('customer_id').aggregate({ 'Month' : 'min', 'Month' : 'max'}) 

任何想法我怎麼能做到這一點?

回答

1

您可以使用:

transactions.groupby('customer_id').aggregate({ 'Month' : ['min', 'max']}) 

樣品:

transactions = pd.DataFrame({'customer_id':[1,2,3,1,2,1], 
        'Month':  [4,5,6,1,1,3]}) 

print (transactions) 
    Month customer_id 
0  4   1 
1  5   2 
2  6   3 
3  1   1 
4  1   2 
5  3   1 

df = transactions.groupby('customer_id').aggregate({ 'Month' : ['min', 'max']}) 
print (df) 
      Month  
       min max 
customer_id   
1    1 4 
2    1 5 
3    6 6 

更快的解決方案是:

g = transactions.groupby('customer_id')['Month'] 
print (pd.concat([g.min(), g.max()], axis=1, keys=['min','max'])) 
+0

許多感謝的人! – Shgidi