Pandas DataFrame拼接后出现重复同名列的技术问题求助
解决pd.concat拼接DataFrame时出现重复列的问题
这个问题的核心原因是两个DataFrame中同名的agentid列数据类型不一致,pandas在拼接时会将数据类型不同的同名列视为独立的列,从而导致重复列的出现。
第一步:验证问题根源
先检查两个DataFrame各列的数据类型,确认agentid的类型差异:
print(df1.dtypes) print(df2.dtypes)
你会发现agentid列的类型不一样(比如一个是int64,另一个是object或者float64)。
第二步:统一数据类型后再拼接
将两个DataFrame的agentid列转换为相同的数据类型(比如统一为int64),然后再执行拼接:
# 统一agentid列的数据类型 df1['agentid'] = df1['agentid'].astype('int64') df2['agentid'] = df2['agentid'].astype('int64') # 执行拼接(可选ignore_index=True重置索引,让结果更整洁) result = pd.concat([df1, df2], sort=False, ignore_index=True) print(result)
执行后会得到正确的拼接结果:
agent agentid agentname agentaddress 0 1 1001 test delhi 1 2 1002 test1 vadodara
额外排查点
如果统一类型后还是出现重复列,那要检查列名是否完全一致:
# 对比两个DataFrame的列名列表 print(df1.columns.tolist()) print(df2.columns.tolist())
有时候列名看起来一样,但实际包含隐藏空格、大小写差异(比如AgentID和agentid),这时候需要先统一列名:
# 确保列名完全一致(转为小写并去除首尾空格) df1.columns = df1.columns.str.strip().str.lower() df2.columns = df2.columns.str.strip().str.lower()
内容的提问来源于stack exchange,提问作者Mohit Yadav
相关产品推荐
相关产品推荐

