【问题标题】:Pandas groupby, aggregate and filter strange behaviorPandas groupby,聚合过滤奇怪行为
【发布时间】:2021-04-15 16:18:44
【问题描述】:

我正在尝试根据一些聚合度量来过滤数据集:我需要找到执行了 5 到 15 笔交易的UserIDs,或者他们的平均付款介于 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') 还是有更好的方法在分组和聚合后进行过滤?

【问题讨论】:

  • 试试grouped_mean = dataset.groupby('UserID')['Amount'].mean() 这应该默认放弃NaN。您也没有采用 Authorized 的意思。我认为你为什么得到那些 NaN 是因为 Aurthorized 的平均值不是 NaN 因此返回记录。

标签: python pandas pandas-groupby split-apply-combine


【解决方案1】:

确实,cmets 中Scott Boston 的解决方案解决了这个问题。在计算平均值之前必须选择相关的列。

【讨论】:

    猜你喜欢
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 2022-01-21
    • 2019-08-10
    • 2017-11-03
    • 2021-09-19
    相关资源
    最近更新 更多