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

在Pandas中按企业分组并合并cited_docdbs列表的实现

问题描述

我有一个记录专利引用关系的数据库,数据结构如下:

{'index': {0: 0, 1: 1, 2: 2, 12: 12, 21: 21},
 'docdb_family_id': {0: 57904406,
  1: 57904406,
  2: 57906556,
  12: 57909419,
  21: 57942222},
 'cited_docdbs': {0: [15057621,
   16359315,
   18731820,
   19198211,
   19198218,
   19198340,
   19550248,
   19700609,
   20418230,
   22144166,
   22513333,
   22800966,
   22925564,
   23335606,
   23891186,
   25344297,
   25345599,
   25414615,
   25495423,
   25588955,
   26530649,
   27563473,
   34277948,
   36626718,
   38801947,
   40454852,
   40885675,
   40957530,
   41249600,
   41377563,
   41378429,
   41444278,
   41797413,
   42153280,
   42340085,
   42340086,
   42678557,
   42709962,
   42709963,
   42737942,
   43648036,
   44691991,
   44947081,
   45352855,
   45815534,
   46254922,
   46382961,
   47830116,
   49676686,
   49912209,
   54191614],
  1: [15057621,
   16359315,
   18731820,
   19198211,
   19198218,
   19198340,
   19550248,
   19700609,
   20418230,
   22144166,
   22513333,
   22800966,
   22925564,
   23335606,
   23891186,
   25344297,
   25345599,
   25414615,
   25495423,
   25588955,
   26530649,
   27563473,
   34277948,
   36626718,
   38801947,
   40454852,
   40885675,
   40957530,
   41249600,
   41377563,
   41378429,
   41444278,
   41797413,
   42153280,
   42340085,
   42340086,
   42678557,
   42709962,
   42709963,
   42737942,
   43648036,
   44691991,
   44947081,
   45352855,
   45815534,
   46254922,
   46382961,
   47830116,
   49676686,
   49912209,
   54191614],
  2: [6078355,
   8173164,
   14235835,
   16940834,
   18152411,
   18704525,
   27343995,
   45467248,
   46172598,
   49878759,
   50995553,
   52668238],
  12: [6293366,
   7856452,
   16980051,
   23177359,
   26477802,
   27453602,
   41135094,
   53004244,
   54332594,
   55018863],
  21: [7913900,
   13287798,
   18834564,
   23971781,
   26904791,
   27304292,
   29720924,
   34622252,
   35197847,
   37766575,
   39873073,
   42075013,
   44508652,
   44530218,
   45571357,
   48222848,
   48747089,
   49111776,
   49754218,
   50024241,
   50474222,
   50545849,
   52580625,
   58800268]},
 'doc_std_name': {0: 'SEEO INC',
  1: 'BOSCH GMBH ROBERT',
  2: 'SAMSUNG SDI CO LTD',
  12: 'NAGAI TAKAYUKI',
  21: 'SAMSUNG SDI CO LTD'}}

我目前用以下代码按企业(doc_std_name)分组:

df_grouped_byfirm=data_min.groupby("doc_std_name").agg(publn_nrs=('docdb_family_id',"unique")).reset_index()

现在需要把同一企业对应的所有cited_docdbs列表合并成一个大列表,比如示例中SAMSUNG SDI CO LTD的两个条目对应的cited_docdbs要合并成:

[6078355,
   8173164,
   14235835,
   16940834,
   18152411,
   18704525,
   27343995,
   45467248,
   46172598,
   49878759,
   50995553,
   52668238,
7913900,
   13287798,
   18834564,
   23971781,
   26904791,
   27304292,
   29720924,
   34622252,
   35197847,
   37766575,
   39873073,
   42075013,
   44508652,
   44530218,
   45571357,
   48222848,
   48747089,
   49111776,
   49754218,
   50024241,
   50474222,
   50545849,
   52580625,
   58800268]

请问怎么实现这个需求?


解决方案

可以通过自定义聚合函数或Pandas内置方法组合实现,以下是几种实用方案:

方法一:自定义合并列表函数

直接在agg方法中为cited_docdbs列指定合并逻辑:

def merge_cited_lists(lists):
    merged = []
    for sublist in lists:
        merged.extend(sublist)
    return merged

# 同时处理两个列的聚合
df_grouped_byfirm = data_min.groupby("doc_std_name").agg(
    publn_nrs=('docdb_family_id', "unique"),
    merged_cited_docdbs=('cited_docdbs', merge_cited_lists)
).reset_index()

方法二:用explode简化聚合

利用explode展开列表元素后再重新聚合,代码更简洁:

df_grouped_byfirm = data_min.groupby("doc_std_name").agg(
    publn_nrs=('docdb_family_id', "unique"),
    merged_cited_docdbs=('cited_docdbs', lambda x: x.explode().tolist())
).reset_index()

方法三:合并后去重(可选)

如果需要移除重复的引用ID,可在聚合函数中加入去重逻辑:

def merge_unique_cited_lists(lists):
    merged = []
    for sublist in lists:
        merged.extend(sublist)
    # 去重并保留原顺序(Python 3.7+字典默认有序)
    return list(dict.fromkeys(merged))

df_grouped_byfirm = data_min.groupby("doc_std_name").agg(
    publn_nrs=('docdb_family_id', "unique"),
    merged_cited_docdbs=('cited_docdbs', merge_unique_cited_lists)
).reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:10:12