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

如何在Python中将带小数的int64列转换为无小数整数?

解决pandas年份列转整数的问题

错误原因

你碰到的ValueError: invalid literal for int() with base 10: '',是因为自定义函数里的str(x).rstrip(".0")处理0.0时,会把"0.0"里的0和.全删光,得到空字符串,转int自然报错。另外你说列是int64类型却存着2014.0,这是类型显示问题——int64根本存不了带小数的数,实际列类型应该是float64或者object。

靠谱解决方案

别写自定义函数了,pandas自带的方法更简单高效:

方法1:处理空值后转整数

  • 如果空值要换成0:
df1['Année'] = df1['Année'].fillna(0).astype(int)
  • 如果要保留空值(用支持空值的整数类型):
df1['Année'] = df1['Année'].astype('Int64')  # 注意是大写的I

方法2:修复你的自定义函数(不推荐)

非要用自定义函数的话,别玩字符串操作,直接转float取整:

def remove_decimal(x):
    if pd.isnull(x):
        return 0
    else:
        return int(float(x))

df1['Année'] = df1['Année'].apply(remove_decimal)

为啥astype(int, errors='ignore')没用?

errors='ignore'是遇到转不了的行就跳过,不做修改。你的列里肯定有转不了的异常值(比如空值),所以大部分行都没变化,看起来就像没效果。得先处理空值和异常值再转。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:20:26