python - 使用 NamedAgg 聚合带有条件的 Pandas DataFrame
问题描述
我有一个带有 order_state 列的订单表。并且需要计算每个订单状态的订单,按小时分组,但不使用按 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()
for countTrue
的值:
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'})
推荐阅读
- javascript - 状态 204:response.json() - 捕获 SyntaxError:在 manageRequest 处 JSON 输入意外结束
- powerbi - REMOVEFILTERS 没有达到我在 Power BI 中的预期
- android - 初始化后如何获取片段的宽度/高度
- python - Python TKinter 进度条标签未正确运行
- html - 即使我的文件在同一目录中,如何应用 CSS?
- javascript - NCC / TS-NODE 中的奇怪错误阻止构建 TypeScript 项目
- typescript - 注意局部变量不能变回null
- javascript - 使 Material UI Grid 项目的子项拉伸以适应父容器的剩余高度
- javascript - Fetch API:是否可以请求部分 html 页面(开头)
- azure - 是否可以在不知道总共有多少阶段的情况下在 Azure Pipelines 中运行“最后阶段”?