首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pandas to_numeric无法将字符串值转换为整数

pandas to_numeric无法将字符串值转换为整数
EN

Stack Overflow用户
提问于 2017-08-15 23:47:45
回答 1查看 1.9K关注 0票数 3

我正在尝试使用pandas.to_numeric将系列转换为int%s。

代码语言:javascript
运行
复制
df['numeric_col'] = pd.to_numeric(df['numeric_col'], errors='raise')

我弄错了,

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "/home/user_name/script.py", line 86, in execute
data = module(**module_args).execute(data)
  File "/home/user_name/script.py", line 62, in execute
invoices['numeric_invoice_no'] = pd.to_numeric(invoices['numeric_invoice_no'], errors='raise')
  File "/usr/local/lib/python3.5/dist-packages/pandas/core/tools/numeric.py", line 126, in to_numeric
coerce_numeric=coerce_numeric)
  File "pandas/_libs/src/inference.pyx", line 1052, in pandas._libs.lib.maybe_convert_numeric (pandas/_libs/lib.c:56638)
ValueError: Integer out of range. at position 106759

如果我把它改成,

代码语言:javascript
运行
复制
df['numeric_col'] = pd.to_numeric(df['numeric_col'], errors='coerce')

numeric_col中的值不会转换为int%s,即它们仍然是string%s。

如果我改成,

代码语言:javascript
运行
复制
df['numeric_col'] = df['numeric_col'].astype(int)

我弄错了,

代码语言:javascript
运行
复制
OverflowError: Python int too large to convert to C long

所以我必须把它改成,

代码语言:javascript
运行
复制
df['numeric_col'] = df['numeric_col'].astype(float)

那么就不会产生错误。

序列的大小约为994572,列中的字符串类似于523336122735603286002031757

我想知道这里的to_numericastype有什么问题。

我在Linux mint 18.1 64-bit上运行Python 3.5

EN

回答 1

Stack Overflow用户

发布于 2021-07-28 12:53:33

可能在数字字符串值中有逗号(,),或者在数据帧的列中仍然有空值(NaN),因此尝试使用.replace()方法将逗号替换为空格,然后使用.fillna()、.replace或.dropna()删除或填充空值

在使用df‘’DataFrame Column‘=df’‘DataFrame Column'.astype(int)之前

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45696492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档