我正在尝试使用pandas.to_numeric
将系列转换为int
%s。
df['numeric_col'] = pd.to_numeric(df['numeric_col'], errors='raise')
我弄错了,
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
如果我把它改成,
df['numeric_col'] = pd.to_numeric(df['numeric_col'], errors='coerce')
numeric_col
中的值不会转换为int
%s,即它们仍然是string
%s。
如果我改成,
df['numeric_col'] = df['numeric_col'].astype(int)
我弄错了,
OverflowError: Python int too large to convert to C long
所以我必须把它改成,
df['numeric_col'] = df['numeric_col'].astype(float)
那么就不会产生错误。
序列的大小约为994572,列中的字符串类似于52333612273
、56032860
或02031757
。
我想知道这里的to_numeric
和astype
有什么问题。
我在Linux mint 18.1 64-bit
上运行Python 3.5
。
发布于 2021-07-28 12:53:33
可能在数字字符串值中有逗号(,),或者在数据帧的列中仍然有空值(NaN),因此尝试使用.replace()方法将逗号替换为空格,然后使用.fillna()、.replace或.dropna()删除或填充空值
在使用df‘’DataFrame Column‘=df’‘DataFrame Column'.astype(int)之前
https://stackoverflow.com/questions/45696492
复制相似问题