【问题标题】:convert object datatype to int in python在python中将对象数据类型转换为int
【发布时间】:2025-12-25 10:35:05
【问题描述】:

我有一个变量例如:

  • VISIT_NUMBER
  • 2458611-22
  • 2051216-837
  • 2555065-216
  • 2133886-39
  • 2415201-156
  • 8332215-12

对象类型,我想把它转换成int类型。

我试过了

Dataset1['VISIT_NUMBER']=Dataset1['VISIT_NUMBER'].astype(str).astype(int)

错误:ValueError:int() 的无效文字,基数为 10:'2458611-22'

即使 astype(float) 也会给我同样的错误。

使用:pd.to_numeric(Dataset1['VISIT_NUMBER'])

ValueError:无法解析位置 0 处的字符串“2458611-22”

关于变量的更多信息:

VISIT_NUMBER 26265 个非空对象

【问题讨论】:

  • 你想让“2458611-22”变成什么整数?
  • 1) 使用pandas 标签标记您的熊猫问题。 2) 发布minimal reproducible example。你不能只说“我有VISIT_NUMBER 2458611-22 2051216-837 2555065-216 2133886-39 2415201-156 8332215-12,它是object类型的”,这不是有用的信息。它是什么种类的对象?

标签: python pandas types


【解决方案1】:

int 大小是有限的。 在 python 32bit 的情况下:

>>> sys.maxsize
2147483647

您可以使用 sys.maxsize 检查 int 的最大大小。

这就是为什么您的案例中的代表是2458611-22 此外,python 不知道将这种格式转换为 int。 (因为您在要求转换的字符串中有-22

【讨论】:

  • 嗨,有没有办法可以将这种类型转换为 int of float ?我的变量中的值有一个 - 后跟数字。 sys.maxsize 输出 9223372036854775807
  • 你可以这样做:value=str('2458611-22') 然后value2=value.replace('-', 'e-') 然后float(value2)