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

如何给字典中存储的多个DataFrame添加Key列并按列数分组拼接

问题解答

一、新增键名列且不生成额外DataFrame的实现

你原代码出现额外DataFrame的核心原因是直接用df['sheet_name'] = key在部分场景下会触发pandas的副本机制,生成新的DataFrame对象而非原地修改。要实现完全原地修改,用loc索引赋值即可:

for key, df in sheet_to_df_map.items():
    df.loc[:, 'sheet_name'] = key

这种写法直接操作原DataFrame的内存空间,不会生成多余的临时DataFrame对象。

二、按列数分类拼接DataFrame的实现

你可以先以列数为键构建分类字典,再对每类的DataFrame列表做合并操作,示例代码如下:

import pandas as pd
from collections import defaultdict

# 第一步:按列数分组
col_count_group = defaultdict(list)
for df in sheet_to_df_map.values():
    col_count = len(df.columns)
    col_count_group[col_count].append(df)

# 第二步:对每组列数相同的DataFrame做拼接
concat_result = {}
for col_num, df_list in col_count_group.items():
    # ignore_index=True表示拼接后重置行索引,不需要可删除该参数
    concat_result[col_num] = pd.concat(df_list, ignore_index=True)

执行完成后,concat_result字典的键为列数,值为对应列数所有DataFrame拼接后的结果。

内容的提问来源于stack exchange,提问作者Steven González

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:00:02