簡體   English   中英

Pandas groupby,聚合過濾奇怪行為

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM