You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas分组统计:含资产A的订单单独/组合情况计数需求

Pandas解决方案:统计特定资产关联的订单数量

数据准备

先将示例数据导入Pandas DataFrame:

import pandas as pd

data = {
    'order_id': [1,1,1,2,2,3,4,4],
    'asset_id': ['A','B','C','A','C','A','B','C']
}
df = pd.DataFrame(data)

方法一:分组聚合统计

  1. 按order_id分组,提取每个订单的关键特征:
order_info = df.groupby('order_id').agg(
    has_A=('asset_id', lambda x: 'A' in x.values),
    asset_count=('asset_id', 'nunique')
).reset_index()
  1. 统计仅包含资产A的订单数量:
only_A_count = len(order_info[(order_info['has_A']) & (order_info['asset_count'] == 1)])
print(f"仅包含资产A的订单数量:{only_A_count}")  # 输出1
  1. 统计包含A且同时包含其他资产的订单数量:
A_with_others_count = len(order_info[(order_info['has_A']) & (order_info['asset_count'] > 1)])
print(f"包含资产A且同时包含其他资产的订单数量:{A_with_others_count}")  # 输出2

方法二:高效布尔判断统计

无需生成额外集合,直接通过布尔条件完成统计,适合大数据量场景:

order_flags = df.groupby('order_id').agg(
    has_A=('asset_id', lambda x: (x == 'A').any()),
    has_other=('asset_id', lambda x: (x != 'A').any())
).reset_index()

only_A = len(order_flags[(order_flags['has_A']) & (~order_flags['has_other'])])
A_plus_others = len(order_flags[(order_flags['has_A']) & (order_flags['has_other'])])

print(f"仅包含资产A的订单数量:{only_A}")
print(f"包含资产A且同时包含其他资产的订单数量:{A_plus_others}")

内容的提问来源于stack exchange,提问作者Léal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 01:31:01