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

如何正确使用Pandas拼接DataFrame?拼接列异常问题求助

问题原因与解决方案

问题根源

将p3存入CSV再读取后,p3的列名会被自动转为字符串类型(如'0'、'1'),而你创建的p4列名是默认的整数类型(0)。pd.concat()会严格按列名(包括类型)对齐,类型不匹配的列名会被判定为不同列,导致p4被当作新列拼接,而非追加到p3的行下方。

解决方案

以下是几种可行的修复方式:

方式1:读取CSV时统一列名类型

读取p3后,将列名转回整数,和p4的列名类型保持一致:

import pandas as pd
p1 = pd.DataFrame([['john','Kim'],[9,3]])
p2 = pd.DataFrame([['Alice'],[4]])

p1.index = ['A','']
p2.index = ['B', '']

p3 = pd.concat([p1,p2]).fillna('')
p3.to_csv('test.csv', index = True)

# 修改读取逻辑,将列名转为整数
p3 = pd.read_csv('test.csv',index_col=0)
p3.columns = p3.columns.astype(int)  # 关键:统一列名类型

p4 = pd.DataFrame([['George'],[7]])
p4.index=['K','']
p5 = pd.concat([p3,p4]).fillna('')  # 填充空值保持格式一致
print(p5)

方式2:创建p4时匹配p3的列名

直接让p4的列名和列数与p3完全一致:

# 读取p3后
p3 = pd.read_csv('test.csv',index_col=0)
# 创建p4时指定和p3相同的列名,空列填充''
p4 = pd.DataFrame([['George',''],[7,'']], columns=p3.columns)
p4.index=['K','']
p5 = pd.concat([p3,p4])

方式3:强制忽略列名对齐(谨慎使用)

如果确定p3和p4的列顺序完全对应,可以用ignore_index强制行拼接,但此方法不推荐用于列数或顺序可能变化的场景:

p5 = pd.concat([p3,p4], ignore_index=True, axis=0).fillna('')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 06:48:43