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

如何保留DataFrame中某列值在另一列存在多匹配的行?

问题:筛选DataFrame中满足特定匹配条件的行

需求:保留DataFrame中符合以下规则的行——若number列的某个值对应的letter列匹配项(去重后)数量超过1,则保留该number值对应的所有行。

输入数据:

number, letter
1, A
2, B
5, D
2, D
2, D
5, D

解决方案

使用Pandas可以快速实现这个筛选逻辑,步骤如下:

  • 分组统计每个number对应的唯一letter数量
  • 筛选出唯一letter数量大于1的number值
  • 用这些值过滤原DataFrame

代码实现

import pandas as pd

# 构造输入DataFrame
df = pd.DataFrame({
    'number': [1, 2, 5, 2, 2, 5],
    'letter': ['A', 'B', 'D', 'D', 'D', 'D']
})

# 统计每个number对应的不重复letter数量
unique_letter_counts = df.groupby('number')['letter'].nunique()

# 获取符合条件的number列表
target_numbers = unique_letter_counts[unique_letter_counts > 1].index

# 过滤得到结果
filtered_df = df[df['number'].isin(target_numbers)]

# 输出结果(转为CSV格式)
print(filtered_df.to_csv(index=False))

预期输出

number,letter
2,B
2,D
2,D

逻辑说明

  • groupby('number')['letter'].nunique():按number分组后,统计每组内不重复的letter数量,这里number=2对应2个唯一值(B、D),number=1和5都只有1个唯一值。
  • isin(target_numbers):只保留原DataFrame中number属于符合条件列表的行,最终得到number=2的所有行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:14:52