我有數據框,我去熊貓做多個列聚合。Python:在熊貓中做多個列聚合
import pandas as pd
import numpy as np
df = pd.DataFrame({'ser_no': [1, 1, 1, 2, 2, 2, 2, 3, 3, 3],
'CTRY_NM': ['a', 'a', 'b', 'e', 'e', 'a', 'b', 'b', 'b', 'd'],
'lat': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'long': [21, 22, 23, 24, 25, 26, 27, 28, 29, 30]})
df2 = df.groupby(['ser_no', 'CTRY_NM']).lat.agg({'avg_lat': np.mean})
用此代碼,我得到的意思是lat
。我也想找到long
的意思。
我試圖df2 = df.groupby(['ser_no', 'CTRY_NM']).lat.agg({'avg_lat': np.mean}).long.agg({'avg_long': np.mean})
但這會產生
AttributeError: 'DataFrame' object has no attribute 'long'
如果我只是做avg_long
,代碼工作爲好。
df2 = df.groupby(['ser_no', 'CTRY_NM']).long.agg({'avg_long': np.mean})
In[2]: df2
Out[42]:
avg_long
ser_no CTRY_NM
1 a 21.5
b 23.0
2 a 26.0
b 27.0
e 24.5
3 b 28.5
d 30.0
有沒有辦法在一個步驟中做到這一點,或者這是我必須單獨做的事情,以後再回來?
我很欣賞答案,但這可能會導致問題,因爲在真實的數據集中,我有我不想表示的列。我只是在這裏製造玩具問題。 – dustin
那麼如果你有更多的列,只需通過子集數據框排除它們。 – Sam