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

pandas concat合并数据集后数值自动转float无法转Int如何解决

问题根因

pd.concat在按列拼接(axis=1)时,默认是按索引对齐行的。你贴的df1里夹了大量空行,实际导入后df1的索引是不连续的,还带了一堆空值行,和df2从0开始的连续索引对不上,对不齐的位置pandas会自动填NaN。
而普通的int64整数类型存不了NaN,所以系统会自动把这列转成能存空值的float64类型,就出现了你看到的带.0的浮点数。你之前用.astype("Int64")转不回来,本质是列里还藏着没清理掉的NaN空值,转换自然会失败。

解决步骤

不要直接拼,先把两个数据集的无效内容清干净、索引对齐再合并,从根上避免产生NaN,就不会触发自动转float:

  • 第一步:先给两个数据集清掉全空的无效行,重置成连续的默认整数索引
# 清理df1:删除全空行,丢弃原来错位的旧索引
df1 = df1.dropna(how="all").reset_index(drop=True)
# 同样清理df2
df2 = df2.dropna(how="all").reset_index(drop=True)
  • 第二步:再执行你原来的拼接逻辑
df3 = pd.concat([df1, df2], axis=1, ignore_index=False)

操作完你会发现df1列会保留原本的整数类型,不会再自动转成浮点数。

如果清理完还是有类型异常,可以在合并后确认列内无空值,再手动转成整数类型即可:

df3['df1'] = df3['df1'].astype('int64')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:57:14