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

Pandas合并DataFrame报错求助:TypeError无法拼接字符串类型

问题解决步骤

1. 修复pd.concat的核心错误

报错的直接原因是你在pd.concat里传入了字符串列表(['tratamento', 'tratamento2']),但concat要求传入的是DataFrame/Series对象的列表,不是变量名的字符串。修改代码:

unificado = pd.concat([tratamento, tratamento2])  # 去掉引号,直接传变量

2. 处理文件路径的转义问题

Windows路径里的反斜杠\会被Python当成转义字符,导致路径解析错误。两种解决方式:

  • 使用原始字符串,在路径前加r:
file_path = r'C:\Users\gabriel.brito\Desktop\Teste\teste2.xlsx'
unificado.to_excel(file_path)
os.system(f'start {file_path}')  # 用start命令打开文件更可靠
  • 或者把反斜杠换成双反斜杠\\:
file_path = 'C:\\Users\\gabriel.brito\\Desktop\\Teste\\teste2.xlsx'

3. 优化数据整合逻辑(针对"合并后无数据"问题)

你当前的逻辑是把df分别和两张表join后的结果上下拼接,如果你实际需求是把两张关联表的信息都合并到df中(横向整合),应该用链式join,而不是concat:

# 先把df和de_para关联,再关联dexpara
unificado = df.join(de_para.set_index('LINHA'), on='codlinha', lsuffix='_left', rsuffix='_right', how='inner')\
             .join(dexpara.set_index('DIA'), on='dia', lsuffix='_left', rsuffix='_right', how='inner')

注意:lsuffix和rsuffix要避免重复,否则会出现列名冲突错误。如果两张关联表没有重名列,可以省略这两个参数。

额外排查提示

  • 检查tratamento和tratamento2的列结构:如果用concat上下拼接,两者的列名和数量需要匹配,否则会出现大量NaN值,看起来像"无数据"。
  • 用print(tratamento.shape)和print(tratamento2.shape)查看两个DataFrame的行数,确认是否有数据。

内容的提问来源于stack exchange,提问作者Gabriel Rodrigues de Brito - C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:40:25