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

如何筛选pandas DataFrame中拥有全部时间点数据的个体记录

实现方案

方案1:groupby+filter 简洁写法

直接按用户id分组,筛选出拥有全部6个时间点的分组即可,两种写法按需选择:

# 写法A:适合确认无重复时间点的场景,直接判断分组行数
filtered_df = df.groupby("id").filter(lambda x: len(x) == 6)

# 写法B:更严谨,避免同id下有重复时间点的异常情况,统计唯一时间点数量
filtered_df = df.groupby("id").filter(lambda x: x["timepoint"].nunique() == 6)

方案2:先查有效id再过滤(大数据量下效率更高)

先计算所有符合要求的id列表,再通过布尔索引过滤原数据:

# 统计每个id对应的唯一时间点数量
id_time_cnt = df.groupby("id")["timepoint"].nunique()
# 提取有6个完整时间点的id列表
valid_ids = id_time_cnt[id_time_cnt == 6].index
# 过滤原数据
filtered_df = df[df["id"].isin(valid_ids)]

运行上述任意一种方案得到的filtered_df就是你需要的结果,你可以通过print(filtered_df)验证输出是否符合预期。


内容的提问来源于stack exchange,提问作者Dr Wampa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:54:05