我有一個資料框架:
id day action_type
1 0 upload
1 0 上傳
1 0 上傳
1 1 上傳
1 1 上傳
2 0 上傳
2 0 上傳
2 1 上傳
如何改變我的查詢,以獲得在列day中具有唯一天數和在所有id中具有平均數 "upload "action_type的表。因此,期望的結果必須像這樣:
day avg_num_action
0 2.5
1 1.5
是2.5,因為(3 2)/2(3個上傳的id:1和2個上傳的id:2)。1.5也是一樣
如何在pandas中做到這一點?
uj5u.com熱心網友回復:
試試crosstab
pd.crosstab(df.id, df.day).mean()
uj5u.com熱心網友回復:
假設df是你的資料框架:
df.groupby(['day', 'id']).count() .groupby('day') .mean()
uj5u.com熱心網友回復:
用groupby和unstack:
result = df.groupby(['id', 'day']).size() 。
結果
日子
0 2.5
1 1.5
dtype: float64
為了符合你的預期輸出,添加reset_index:
result.reset_index(name = 'avg_num_action' )
天 avg_num_action
0 0 2.
1 1 1.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/323162.html
標籤:
