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

Python中如何对DataFrame列表迭代调用自定义合并函数解决大表合并内存不足问题

Pandas大表分片关联实现方案

首先先修正你当前代码的两个隐含问题:

  • 你通过list(bigdata1.groupby("GROUP"))得到的split_data列表中,每个元素是**(分组名, 分组对应DataFrame)**的二元组,不是直接的DataFrame对象,调用关联函数时需要取出元组的第二个元素使用
  • 你定义的关联函数缺少return语句,执行后不会返回关联后的结果,需要先调整函数定义

修正后的关联函数如下:

def joining_function(df):
    return pd.merge(df, bigdata2, on = 'PERSON_ID', how = 'left')

方案1:用列表存储所有关联结果,按索引调取

你可以直接通过列表推导式批量执行关联,结果会按照分片的顺序存储在列表中:

joined_result_list = [joining_function(df_part) for (group_name, df_part) in split_data]

调取方式:取第N个分片的关联结果,直接用索引即可,比如取第1个分片结果写joined_result_list[0],取第10个写joined_result_list[9](Python索引从0开始计数)。

方案2:用字典存储所有关联结果,按分组名调取

如果需要根据分组名快速查找对应的关联结果,可以用字典存储,分组名作为键,关联后的DataFrame作为值:

joined_result_dict = {group_name: joining_function(df_part) for (group_name, df_part) in split_data}

调取方式:比如要调取GROUP值为"GROUP_123"的关联结果,直接写joined_result_dict["GROUP_123"]即可。

如果后续需要把所有分片的关联结果合并为一个完整的DataFrame,执行以下代码即可:

full_merged_df = pd.concat(joined_result_list, ignore_index=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 09:24:01