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

如何筛选在不同id列分组中重复出现的to列值?

高效查找跨不同id分组存在的to值

给定如下数据集(包含id和to两列):

id  to
0   1   0x954b890704693af242613edef1b603825afcd708
1   1   0x954b890704693af242613edef1b603825afcd708
2   1   0x607f4c5bb672230e8672085532f7e901544a7375
3   1   0x9b9647431632af44be02ddd22477ed94d14aacaa
4   2   0x9b9647431632af44be02ddd22477ed94d14aacaa

需求是找出在不同id分组中都存在的to值,示例中符合条件的只有0x9b9647431632af44be02ddd22477ed94d14aacaa。

当前使用嵌套循环实现的代码如下:

for index, row in df.iterrows():
  to=row['to']
  id=row['id']
  for index, row in df.iterrows():
    if row['to']==to and row['id']!=id:
      print(to)

更高效的实现方法

嵌套循环的时间复杂度为O(n²),数据量较大时效率极低。可以利用pandas的向量化操作优化,步骤如下:

  1. 统计数据集中总共有多少个唯一的id
  2. 对每个to值,统计它对应的唯一id数量
  3. 筛选出唯一id数量等于总唯一id数的to值

代码实现:

import pandas as pd

# 假设df是你的数据集
# 1. 获取总唯一id数量
total_unique_ids = df['id'].nunique()

# 2. 按to分组,统计每个to对应的唯一id数
to_id_counts = df.groupby('to')['id'].nunique()

# 3. 筛选出符合条件的to值
result = to_id_counts[to_id_counts == total_unique_ids].index.tolist()

print(result)

这段代码的时间复杂度远低于嵌套循环,处理大数据集时优势明显。如果需求是找出至少在两个不同id中存在的to值,只需把判断条件改为to_id_counts >= 2即可。

内容的提问来源于stack exchange,提问作者Gloria Dalla Costa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 05:48:19