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

拼接Pandas DataFrame时如何保留原始数据类型?

保留DataFrame拼接时的原始数据类型

我需要拼接两个DataFrame:mut为整数数据类型,mirna为浮点数据类型。但拼接后的合并DataFrame将所有值强制转换为浮点类型。相关代码如下:

mut.insert(len(mut.columns), "category", 0, True)
mut = mut.dropna()

mirna.insert(len(mirna.columns), "category", 1, True)
mirna = mirna.dropna()

df = pd.concat([mut, mirna])

mut数据示例:

pd.DataFrame({'TCGA-2Z-A9J1-01A': {'IGF2R': 1, 'NBEA': 1, 'KMT2D': 0, 'HERC2': 0},
 'TCGA-2Z-A9J3-01A': {'IGF2R': 0, 'NBEA': 0, 'KMT2D': 0, 'HERC2': 0},
 'TCGA-2Z-A9J5-01A': {'IGF2R': 0, 'NBEA': 0, 'KMT2D': 0, 'HERC2': 1},
 'TCGA-2Z-A9J6-01A': {'IGF2R': 0, 'NBEA': 0, 'KMT2D': 0, 'HERC2': 0}})

mirna数据示例:

pd.DataFrame({'TCGA-2Z-A9J1-01A': {'hsa-let-7a-3p': 2.436967295678264,
  'hsa-let-7b-5p': 3.6676128143486753,
  'hsa-let-7b-3p': 1.958120697018377,
  'hsa-let-7c-5p': 3.3710754357912336},
 'TCGA-2Z-A9J3-01A': {'hsa-let-7a-3p': 1.8616291060705468,
  'hsa-let-7b-5p': 3.5952286310865538,
  'hsa-let-7b-3p': 1.7737597007222166,
  'hsa-let-7c-5p': 3.4958162915921864},
 'TCGA-2Z-A9J5-01A': {'hsa-let-7a-3p': 2.13165245798285,
  'hsa-let-7b-5p': 3.682127909644228,
  'hsa-let-7b-3p': 1.914741202547229,
  'hsa-let-7c-5p': 3.5227245438834998},
 'TCGA-2Z-A9J6-01A': {'hsa-let-7a-3p': 2.1191074673269097,
  'hsa-let-7b-5p': 3.6612699717201993,
  'hsa-let-7b-3p': 2.123077968206283,
  'hsa-let-7c-5p': 3.5324296559039428}})

问题原因

pd.concat拼接列不重叠的DataFrame时,缺失列的位置会填充NaN。而标准整数类型(int64)无法存储NaN,pandas会自动将这类列转为浮点类型(float64)以兼容缺失值。

解决方法

使用pandas的**可空整数类型(Int64,注意大写I)**替换标准整数类型,该类型支持存储NaN且保留整数的类型属性。浮点列保持原有类型即可。

修改后的代码:

# 将mut的所有整数列转换为可空整数类型
mut = mut.astype('Int64')

mut.insert(len(mut.columns), "category", 0, True)
mut = mut.dropna()

mirna.insert(len(mirna.columns), "category", 1, True)
mirna = mirna.dropna()

# 拼接后保留原始类型
df = pd.concat([mut, mirna])

验证类型:执行df.dtypes可以看到,原mut的列类型为Int64,原mirna的列类型为float64,category列也可根据需求设为Int64。

注意:可空整数类型要求pandas版本≥1.0.0,若版本过低请先升级pandas。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:00:39