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

如何将第二个DataFrame的列数据类型匹配为第一个的类型?

匹配DataFrame对应列的数据类型

我有两个Pandas DataFrame:

df:

IDcountrymoneycodemoney_addother
832932OtherNaN00000NaNNaN
217#8#NaNNaNNaNNaNNaN
1329T2France12131000203452123
124932FranceNaN00016NaNNaN
194022FranceNaN00000NaNNaN

df1:

cod_tmoneymoney_addother
00000453272323321
00016121323822843
0001813138393183
00020181327328128
0003089323204829

执行以下代码检查两表对应列的数据类型是否一致:

cols = df.columns.intersection(df1.columns)
print(df[cols].dtypes.eq(df1[cols].dtypes))

得到结果:

money        False
money_add    False
other        False
dtype: bool

现在需要将df1的对应列数据类型匹配为df的类型,具体实现方法如下:


实现方法

通过遍历两表的共同列,将df1的列转换为df对应列的数据类型即可,代码如下:

cols = df.columns.intersection(df1.columns)
# 遍历共同列,批量转换数据类型
for col in cols:
    df1[col] = df1[col].astype(df[col].dtype)

# 再次验证类型匹配情况
print(df[cols].dtypes.eq(df1[cols].dtypes))

补充说明

  • 如果转换时遇到无法直接兼容的场景(比如字符串转数值时存在非数值字符),可以添加errors参数处理,例如df1[col] = df1[col].astype(df[col].dtype, errors='ignore'),但这种方式会保留无法转换的原始值,需根据业务场景调整。
  • 若df中的列是带空值的可数值类型(如Int64),df1是普通数值类型,astype能自动完成兼容转换,无需额外处理空值问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:50:25