[英]Pandas groupby, aggregate and filter strange behavior
我正在嘗試根據一些聚合度量來過濾數據集:我需要找到執行了 5 到 15 筆交易的UserID
或者他們的平均付款在 0 到 1500 之間。這是我的代碼:
grouped_count = dataset.groupby('UserID').size()
user_count = grouped_count[(grouped_count >= 5) & (grouped_count <= 15)]
grouped_mean = dataset.groupby('UserID').mean()
user_mean = grouped_mean[(grouped_mean['Amount'] >= 0.0) & (grouped_mean['Amount'] <= 1500.0)]
計數部分似乎很好,但我對平均值部分有些擔心:似乎groupby().mean()
運行正確,但隨后過濾部分產生了一些顯示 NaN 值的行,它們應該被刪除。
> grouped_mean
Amount Authorized
UserID
1 64.640000 1.0
2 750.000000 1.0
3 696.762857 1.0
4 424.666667 1.0
5 446.847500 1.0
... ... ...
58504 662.950000 1.0
58505 1578.008750 1.0
58506 2990.800848 1.0
58507 71.190000 1.0
58508 20.000000 1.0
[58508 rows x 2 columns]
> user_mean
Amount Authorized
UserID
1 64.640000 1.0
2 750.000000 1.0
3 696.762857 1.0
4 424.666667 1.0
5 446.847500 1.0
... ... ...
58504 662.950000 1.0
58505 NaN 1.0
58506 NaN 1.0
58507 71.190000 1.0
58508 20.000000 1.0
[58508 rows x 2 columns]
我怎樣才能得到我需要的結果? 我可以只添加一個user_mean = user_mean.dropna(subset='Amount')
還是在分組和聚合后有更好的過濾方法?
事實上, Scott Boston在評論中的解決方案解決了這個問題。 在計算平均值之前必須選擇相關列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.