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

如何在Pandas中按ID分组后筛选合并列唯一值数量<3的组

Pandas分组筛选:保留指定唯一值数量的分组

原始数据

我们有如下DataFrame:

ID  from   to
A    0x    0c
A    0x    0f
A    0f    0n
B    0f    0c
B    0c    0f
C    0k    0j
C    0j    0k
C    0k    0a

需求

按ID分组后,仅保留**from和to两列合并后唯一值总数小于3**的分组,最终保留这些分组的所有行。

解决代码

可以通过groupby的filter方法直接对分组进行过滤,逻辑更简洁:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'ID': ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'],
    'from': ['0x', '0x', '0f', '0f', '0c', '0k', '0j', '0k'],
    'to': ['0c', '0f', '0n', '0c', '0f', '0j', '0k', '0a']
})

# 筛选符合条件的分组
result_df = df.groupby('ID').filter(
    lambda group: pd.concat([group['from'], group['to']]).nunique() < 3
)

# 输出结果
print(result_df)

运行结果

执行后得到目标DataFrame:

ID from  to
3  B   0f  0c
4  B   0c  0f
5  C   0k  0j
6  C   0j  0k
7  C   0k  0a

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:37:12