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

Python处理同一ID多条目:符合条件的ID计数需求

多ID记录的条件统计实现方案

针对你遇到的同一ID对应多条记录的统计需求,用Python的pandas库可以轻松解决,以下是具体步骤和代码:

核心思路

按ID(比如家庭ID)分组,对每个组分别验证两个条件,最后统计符合双条件的ID数量。

步骤与代码

假设你的数据集结构如下(对应你提供的表格):

FamilyIDMemberLikesAppleLikesOrange
1ANoYes
1BNoNo
2CYesYes
3DNoNo
4ENoYes
  1. 导入pandas库
import pandas as pd
  1. 读取数据集
    如果是CSV文件:
df = pd.read_csv('your_dataset.csv')

如果是Excel文件:

df = pd.read_excel('your_dataset.xlsx')
  1. 数据预处理(如果需要)
    如果你的LikesApple/LikesOrange是字符串(比如'Yes'/'No'),先转换成布尔值方便判断:
df['LikesApple'] = df['LikesApple'] == 'Yes'
df['LikesOrange'] = df['LikesOrange'] == 'Yes'
  1. 分组统计符合条件的ID
# 按FamilyID分组,计算每个组是否满足两个条件
result = df.groupby('FamilyID').agg(
    all_dislike_apple=('LikesApple', lambda x: ~x.any()),  # 所有成员都不喜欢苹果
    has_like_orange=('LikesOrange', lambda x: x.any())     # 至少一个成员喜欢橙子
)

# 筛选同时满足两个条件的组,统计数量
count = len(result[(result['all_dislike_apple']) & (result['has_like_orange'])])

print(f"符合条件的家庭数量:{count}")

代码解释

  • groupby('FamilyID'):把同一家庭的所有成员记录归为一组
  • agg():对每个组执行自定义统计逻辑
    • ~x.any():如果组内有任何一个成员喜欢苹果,x.any()返回True,取反后就表示所有成员都不喜欢苹果
    • x.any():只要组内有一个成员喜欢橙子,就返回True,满足第二个条件
  • 最后通过布尔索引筛选同时满足两个条件的组,用len()得到数量

内容的提问来源于stack exchange,提问作者Shafiq S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:40:22