如何解决使用 NamedAgg 聚合带有条件的 Pandas DataFrame
我有一个带有 order_state 列的订单表。并且需要统计每个订单状态的订单,按小时分组,但不使用group by order_state 列。我想使用 NamedAgg。是否可以?像这样:
orders_agg = orders.groupby(
by=[pandas.Grouper(key='created_at',freq='H'),'source']
).agg(
orders_count=pandas.NamedAgg('created_at','count'),finished_orders_count=pandas.NamedAgg('order_state',lambda x: (x == 'finished').count()),cancelled_orders_count=pandas.NamedAgg('order_state',lambda x: (x == 'offer_cancelled').count())
).reset_index().rename(columns={'created_at': 'datetime_msk'})
解决方法
我认为您需要将 .count()
更改为 .sum()
以获取计数 True
的值:
orders_agg = orders.groupby(
by=[pandas.Grouper(key='created_at',freq='H'),'source']
).agg(
orders_count=pandas.NamedAgg('created_at','count'),finished_orders_count=pandas.NamedAgg('order_state',lambda x: x == 'finished').sum(),cancelled_orders_count=pandas.NamedAgg('order_state',lambda x: (x == 'offer_cancelled').sum())
).reset_index().rename(columns={'created_at': 'datetime_msk'})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。