【发布时间】:2021-10-29 20:29:57
【问题描述】:
我想保留最近 3 个月(month_n = 4 到 6)中单个充值次数(recharge_number)超过 2 次的行。假设当前月份为 7。如果任何充值号码满足该条件,则保留与该号码关联的所有信息。
account_no recharge_number year month_n
52 1300002 2021 6
52 1300002 2021 5
52 1300002 2021 4
52 1300002 2021 1
52 1644460 2021 6
52 1644460 2021 5
52 1644460 2021 2
70 1553984 2020 12
70 1553984 2020 11
91 1915689 2021 6
91 1915689 2021 5
91 1915689 2021 4
91 1915689 2020 12
91 1915689 2020 11
91 1915689 2020 10
52 1300002 2020 9
输出:
account_no recharge_number year month_n
52 1300002 2021 6
52 1300002 2021 5
52 1300002 2021 4
91 1915689 2021 6
91 1915689 2021 5
91 1915689 2021 4
我通过以下代码进行了尝试。这是正确的方法还是有更好的解决方案?
df = df.groupby(['account_no','recharge_number','year','month']).recharge_number.agg('count').to_frame('recharge_count').reset_index()
df[((df.month_n >=4) & (df.year ==2021) & (df.recharge_count>=3))]
【问题讨论】:
-
为什么最后一行保留
2020? -
@Chris,我的错!现在编辑!谢谢
标签: python pandas count pandas-groupby aggregate