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

如何合并含数组的DataFrame:匹配trackedSearchId关联分组信息

关联两个DataFrame:基于数组匹配关联字段

Pandas 实现方案

核心思路是先将DF2中包含数组的列拆分为多行,再与DF1进行左连接,确保DF1的每一行都能匹配到对应的分组信息。

  1. 构造示例数据
import pandas as pd

df1 = pd.DataFrame({
    'isActive': [True, False, True],
    'trackedSearchId': ['id1', 'id2', 'id3']
})

df2 = pd.DataFrame({
    'trackedSearchIds': [['id1', 'id3'], ['id2']],
    'Primary Keyword Group(s)': ['Group A', 'Group B']
})
  1. 拆分DF2的数组列
    将trackedSearchIds数组展开为单独行,同时保留对应的分组信息:
df2_expanded = df2.explode('trackedSearchIds').rename(columns={'trackedSearchIds': 'trackedSearchId'})
  1. 关联两个DataFrame
    通过trackedSearchId字段做左连接,保留DF1的所有行:
result_df = df1.merge(df2_expanded, on='trackedSearchId', how='left')

最终结果示例:

isActive trackedSearchId Primary Keyword Group(s)
0      True             id1                  Group A
1     False             id2                  Group B
2      True             id3                  Group A

Spark DataFrame 实现方案

如果处理大数据量,用Spark的实现逻辑类似,利用explode函数拆分数组后再关联:

  1. 初始化Spark并构造数据
from pyspark.sql import SparkSession
from pyspark.sql.functions import explode

spark = SparkSession.builder.appName("ArrayMatchJoin").getOrCreate()

df1 = spark.createDataFrame([
    (True, 'id1'),
    (False, 'id2'),
    (True, 'id3')
], ['isActive', 'trackedSearchId'])

df2 = spark.createDataFrame([
    (['id1', 'id3'], 'Group A'),
    (['id2'], 'Group B')
], ['trackedSearchIds', 'Primary Keyword Group(s)'])
  1. 拆分数组列并关联
# 拆分数组列
df2_expanded = df2.withColumn('trackedSearchId', explode('trackedSearchIds')).drop('trackedSearchIds')

# 左连接获取结果
result_df = df1.join(df2_expanded, on='trackedSearchId', how='left')

# 展示结果
result_df.show()

输出结果:

+--------+---------------+-------------------------+
|isActive|trackedSearchId|Primary Keyword Group(s)|
+--------+---------------+-------------------------+
|    true|            id1|                  Group A|
|   false|            id2|                  Group B|
|    true|            id3|                  Group A|
+--------+---------------+-------------------------+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:52:16