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

DataFrame中统计list_of_ids内与当前行同code_name的id出现次数

问题描述

我有一个包含id、code、code_name字段的DataFrame,其中list_of_ids是由id组成的列表。需要统计每行list_of_ids中的id里,与当前行id拥有相同code_name的id的数量。

输入数据

id code   code_name  list_of_ids
1  AB111  apple      [5,2,3,4]
2  AB222  pear       [3,4]
3  AB333  banana     [1]
4  AB111  apple      []
5  AB222  pear       [2,6,4]
6  AB333  banana     [1,3,5]
7  AB333  banana     [1,3,6]

期望输出

(for_explanation列仅用于展示说明,实际业务中可省略)

id code   code_name  for_explanation            count
1  AB111  apple      [pear,pear,banana,apple]   1
2  AB222  pear       [banana,apple]             0
3  AB333  banana     [apple]                    0
4  AB111  apple      []                         0
5  AB222  pear       [pear,banana,apple]        0
6  AB333  banana     [apple,banana,pear]        0
7  AB333  banana     [apple,banana,banana]      2

解决方案

实现思路

  1. 先建立id与code_name的映射字典,实现O(1)时间复杂度的查询;
  2. 逐行遍历DataFrame,对每行的list_of_ids统计其中code_name与当前行匹配的id数量。

代码实现

import pandas as pd

# 构造输入DataFrame
data = {
    'id': [1,2,3,4,5,6,7],
    'code': ['AB111','AB222','AB333','AB111','AB222','AB333','AB333'],
    'code_name': ['apple','pear','banana','apple','pear','banana','banana'],
    'list_of_ids': [[5,2,3,4],[3,4],[1],[],[2,6,4],[1,3,5],[1,3,6]]
}
df = pd.DataFrame(data)

# 建立id到code_name的映射字典
id_code_map = df.set_index('id')['code_name'].to_dict()

# 定义统计匹配数量的函数
def count_matching_code(row):
    target_name = row['code_name']
    return sum(1 for idx in row['list_of_ids'] if id_code_map.get(idx) == target_name)

# 生成count列
df['count'] = df.apply(count_matching_code, axis=1)

# 可选:生成用于解释的for_explanation列
def get_explain_list(row):
    return [id_code_map.get(idx) for idx in row['list_of_ids']]
df['for_explanation'] = df.apply(get_explain_list, axis=1)

# 输出结果
print(df[['id','code','code_name','for_explanation','count']])

说明

  • 映射字典id_code_map避免了重复查询DataFrame,提升了处理效率;
  • 若不需要for_explanation列,直接删除对应代码块即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:40:31