如何按列合并两个DataFrame?pd.concat与pd.merge使用遇问题求助
解决DataFrame按列合并的问题
核心问题分析
你遇到的pd.merge报错,是因为试图用不同数据类型的列(object和float64)做关联合并;而pd.concat没成功,大概率是没指定横向拼接参数,或者两个DataFrame的索引没对齐。
正确解决方案
方案1:用pd.concat实现横向按列合并(匹配你的预期输出)
你的预期结果是直接把两个DataFrame的列横向拼接、行一一对应,这时候必须给pd.concat加上axis=1参数指定横向拼接:
import pandas as pd result = pd.concat([df, df1], axis=1)
如果之前拼接后结果不对,大概率是两个DataFrame的索引不一致,先重置索引再拼接:
df = df.reset_index(drop=True) df1 = df1.reset_index(drop=True) result = pd.concat([df, df1], axis=1)
方案2:处理类型后用pd.merge(仅当需要关联合并时)
如果你的需求是按某一列做关联合并(不是单纯横向拼接),先统一合并列的数据类型:
比如假设合并列名为key,将其中一个DataFrame的该列类型转换为和另一个一致:
# 把df的key列转为float64,匹配df1的列类型 df['key'] = df['key'].astype('float64') # 或者反过来把df1的key列转为object # df1['key'] = df1['key'].astype('object') # 执行关联合并 result = pd.merge(df, df1, on='key')
内容的提问来源于stack exchange,提问作者Arham Shah
相关产品推荐
相关产品推荐

