我有一個多索引 df:
這個 df 概述了某人通過網站的路徑,sid是會話,vid是訪問者 ID,pid是網頁,ts是他們登陸網站的時間
pid ts
sid vid
1 A page1 t1
A page2 t2
A page3 t3
A page4 t4
A page5 t5
2 B page1 t4
3 C page1 t5
C page2 t6
有些用戶的 pid 路徑長得可笑(1000 ),我想這可能是一個錯誤。但是,當我轉置/旋轉這些資料時,轉置需要很長時間,因為有幾條路徑太長了。
所以我想取pid每個會話的平均值( sid) 并施加一些閾值,在某個數字之后的每個會話(例如平均值)它會洗掉這些行。所以高于每個會話的平均行數是 (5 1 2)/3 = 8/3
現在我有了平均值,我可以對等于 3 的行數施加閾值,那么 df 將如下所示:
pid ts
sid vid
1 A page1 t1
A page2 t2
A page3 t3
2 B page1 t4
3 C page1 t5
C page2 t6
關于如何做到這一點的任何想法?
uj5u.com熱心網友回復:
使用head:
thresh = int(np.ceil(df.groupby('sid').size().mean()))
df.groupby(['sid','vid']).head(thresh)
輸出:
pid ts
sid vid
1 A page1 t1
A page2 t2
A page3 t3
2 B page1 t4
3 C page1 t5
C page2 t6
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/343421.html
上一篇:將資料幀與Pandas合并
下一篇:將list-likes傳遞給.loc或[]帶有任何缺失的標簽將在未來引發KeyError,您可以使用.reindex()作為替代
