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

如何移除DataFrame中同一ID下Info列值完全相同的所有行

解决方法:移除ID对应Info值无变化的行

嘿,这个需求其实用pandas的分组和筛选就能轻松搞定,我给你一步步拆解:

1. 先构造示例数据

首先我们先把你给出的DataFrame用代码还原出来:

import pandas as pd

df = pd.DataFrame({
    'id': [1, 1, 2, 2, 3, 3],
    'info': [0, 0, 0, 10, 20, 20]
})

2. 核心处理逻辑

我们的目标是只保留那些同一个ID下Info列存在不同值的组,具体步骤如下:

  • 按id分组,计算每个组里info列的唯一值数量
  • 筛选出唯一值数量大于1的ID(也就是Info有变化的ID)
  • 用这些ID去过滤原DataFrame,得到最终结果

对应的代码是:

# 第一步:找出Info值有变化的ID
valid_ids = df.groupby('id')['info'].nunique()[lambda x: x > 1].index

# 第二步:筛选出这些ID对应的所有行
result = df[df['id'].isin(valid_ids)]

3. 查看结果

运行上面的代码后,result就是我们要的预期输出:

id  info
2   2     0
3   2    10

简单解释下关键函数:

  • groupby('id')['info'].nunique():统计每个ID组里Info的唯一值数量,比如ID=1的组只有1个唯一值,ID=2的组有2个,ID=3的组只有1个
  • lambda x: x > 1:筛选出唯一值数量大于1的ID,也就是存在Info值变化的ID
  • isin(valid_ids):只保留原DataFrame中ID属于valid_ids的行

内容的提问来源于stack exchange,提问作者Zac R.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:37:58