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

字典中DataFrame与外部DataFrame合并失败问题求助

解决DataFrame字典左连接未生效及赋值报错问题

问题复盘

你用pd.read_excel('test_file.xlsx', sheet_name=None)将多工作表存入字典dict_dfs,但循环内执行左连接后,字典里的DataFrame完全没更新;还试过df[key] = pd.merge(...)这种错误写法,直接触发报错。

原代码:

import pandas as pd
dict_dfs = pd.read_excel('test_file.xlsx', sheet_name=None)
third_party_df = pd.read_excel('another_file.xlsx')

for key,df in dict_dfs.items():
    df.dropna(axis='columns', how='all', inplace=True)
    df['Date'] = pd.to_datetime(df['Date'], format='%Y%m%d')
    df = pd.merge(df, third_party_df, how='left', on='merge_column')

错误赋值尝试:

df[key] = pd.merge(df, third_party_df, how='left', on='merge_column')

问题原因

  1. 循环里的df是字典中对应DataFrame的临时引用,执行df = pd.merge(...)时,只是让df指向了新的DataFrame对象,但原字典dict_dfs里的条目根本没被修改。
  2. 错误写法df[key] = ...是把DataFrame当成普通字典操作,试图给它添加一列名为key的新列,这和你要更新字典条目的需求完全不符,自然报错。

修正方案

方案1:直接更新字典对应键值

循环过程中,把处理并合并后的DataFrame直接赋值回dict_dfs[key],这样字典里的内容才会被真正更新:

import pandas as pd
dict_dfs = pd.read_excel('test_file.xlsx', sheet_name=None)
third_party_df = pd.read_excel('another_file.xlsx')

for key, df in dict_dfs.items():
    # 移除全空列
    cleaned_df = df.dropna(axis='columns', how='all')
    # 转换日期格式
    cleaned_df['Date'] = pd.to_datetime(cleaned_df['Date'], format='%Y%m%d')
    # 执行左连接并更新字典
    dict_dfs[key] = pd.merge(cleaned_df, third_party_df, how='left', on='merge_column')

方案2:用字典推导式更简洁

如果不想用循环赋值,也可以用字典推导式一次性生成处理后的字典,代码更紧凑:

import pandas as pd
dict_dfs = pd.read_excel('test_file.xlsx', sheet_name=None)
third_party_df = pd.read_excel('another_file.xlsx')

dict_dfs = {
    key: pd.merge(
        df.dropna(axis='columns', how='all').assign(Date=pd.to_datetime(df['Date'], format='%Y%m%d')),
        third_party_df,
        how='left',
        on='merge_column'
    )
    for key, df in dict_dfs.items()
}

补充说明

  • 如果你不想创建中间变量cleaned_df,也可以把操作连写,但可读性会稍差一点。
  • 确保third_party_df和每个工作表的merge_column列名一致,否则合并会失败(列名不同时可以用left_on和right_on分别指定两边的列名)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 19:42:15