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
相关产品推荐
相关产品推荐

