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

如何按长度对存储DataFrame的字典排序以解决合并时数据量缩减问题

多DataFrame合并实现方案

1. 按行数排序实现

直接用Python内置的sorted函数即可对字典中的DataFrame按行数排序,排序规则通过key参数指定,reverse参数控制升/降序:

  • reverse=True:降序排序,行数最多的DataFrame排在列表首位
  • reverse=False:升序排序,行数最少的DataFrame排在列表首位

排序代码示例:

# 按行数降序排序
sorted_dfs = sorted(example_dict.values(), key=lambda df: len(df), reverse=True)

2. 合并逻辑实现

排序后选择对应连接方式即可避免小体量DataFrame过滤掉大量数据的问题:

  • 如果采用降序排序,以第一个最长的DataFrame为基准,后续全部使用左连接合并,可完整保留最长DataFrame的所有id
  • 如果采用升序排序,最后一个是最长的DataFrame,后续全部使用右连接合并即可

完整可运行代码示例:

import pandas as pd
from functools import reduce

# 按行数降序排序
sorted_dfs = sorted(example_dict.values(), key=lambda df: len(df), reverse=True)
# 批量左连接合并
master_merged_dfs = reduce(
    lambda left_df, right_df: pd.merge(left_df, right_df, on="id", how="left"),
    sorted_dfs
)

补充说明

如果你需要保留所有DataFrame中出现过的全部id,不需要提前排序,直接将连接方式改为how='outer'即可:

from functools import partial
merged_dfs = partial(pd.merge, on='id', how='outer')
master_merged_dfs = reduce(merged_dfs, example_dict.values())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:48:01