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

如何在无列名情况下合并Pandas DataFrame?

无列名DataFrame与带列名DataFrame的正确合并方法

问题场景

用户创建了两个Pandas DataFrame:

import pandas as pd
df = pd.DataFrame({'col1': [1], 'col2': [4]})
df1 = pd.DataFrame([[5,5]])

直接调用pd.concat([df, df1])合并后,出现多余列,且原int64类型的数据自动转为float64:

col1    col2    0       1
0   1.0     4.0     NaN     NaN
0   NaN     NaN     5.0     5.0

用户期望得到的合并结果为:

col1    col2
0   1        4
0   5        5

解决方案

问题根源是df1使用默认列名(0、1),和df的列名(col1、col2)不匹配,pd.concat默认按列名对齐,因此产生不匹配的列和缺失值(缺失值会让整数类型转为浮点型)。以下是两种可行的解决方法:

方法一:给无列名DataFrame指定匹配列名

在创建df1时直接复用df的列名,或者事后修改列名,再执行合并:

# 方式1:创建df1时指定列名
df1 = pd.DataFrame([[5,5]], columns=df.columns)
# 方式2:事后修改df1的列名
# df1.columns = df.columns

# 执行合并,可选ignore_index=True重置索引避免重复
result = pd.concat([df, df1], ignore_index=True)

方法二:合并时重构无列名DataFrame的结构

直接提取df1的数值,重新构造和df列名一致的DataFrame后合并:

result = pd.concat([df, pd.DataFrame(df1.values, columns=df.columns)], ignore_index=True)

效果验证

执行上述任意方法后,得到的结果均符合预期,且数据类型保持为int64:

col1  col2
0     1     4
1     5     5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:00:47