将对象类型转换为 int 时出现问题
Issue while converting object type to int
我有一个冗长的 python 代码,其中我使用以下方法将一些列的数据类型从对象更改为 int 或 float
df['a'] = df['a'].astype('int')
df['b'] = df['b'].astype('int')
但是我在转换后出现以下错误
int() argument must be a string, a bytes-like object or a number, not 'method'
有没有人遇到过这个错误??请帮忙
您收到该错误是因为该列中至少有一个 python method
对象。很可能整个专栏都充满了一种方法。现在我不得不推测,因为你没有给我们足够的信息,但如果你误用了 ufunc
而忽略了调用它,这很容易意外地做到这一点。
>>> df = pd.DataFrame([[1],[-2],[3]], columns=['a'])
>>> df['a'] = df['a'].abs # BUG: Fills column with `method` object
>>> df['a'] = df['a'].astype('int')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/pandas/core/generic.py", line 5881, in astype
new_data = self._data.astype(
File "/usr/lib/python3/dist-packages/pandas/core/internals/managers.py", line 581, in astype
return self.apply("astype", dtype=dtype, **kwargs)
File "/usr/lib/python3/dist-packages/pandas/core/internals/managers.py", line 438, in apply
applied = getattr(b, f)(**kwargs)
File "/usr/lib/python3/dist-packages/pandas/core/internals/blocks.py", line 559, in astype
return self._astype(dtype, copy=copy, errors=errors, values=values, **kwargs)
File "/usr/lib/python3/dist-packages/pandas/core/internals/blocks.py", line 643, in _astype
values = astype_nansafe(vals1d, dtype, copy=True, **kwargs)
File "/usr/lib/python3/dist-packages/pandas/core/dtypes/cast.py", line 711, in astype_nansafe
return lib.astype_intsafe(arr.ravel(), dtype).reshape(arr.shape)
File "pandas/_libs/lib.pyx", line 547, in pandas._libs.lib.astype_intsafe
TypeError: int() argument must be a string, a bytes-like object or a number, not 'method'
您需要查看您对该列所做的最后一件事,看看它是否不小心用方法对象填充了该列。如果是这样,请添加那些牛仔腿 ()
.
df['a'] = df['a'].abs()
我有一个冗长的 python 代码,其中我使用以下方法将一些列的数据类型从对象更改为 int 或 float
df['a'] = df['a'].astype('int')
df['b'] = df['b'].astype('int')
但是我在转换后出现以下错误
int() argument must be a string, a bytes-like object or a number, not 'method'
有没有人遇到过这个错误??请帮忙
您收到该错误是因为该列中至少有一个 python method
对象。很可能整个专栏都充满了一种方法。现在我不得不推测,因为你没有给我们足够的信息,但如果你误用了 ufunc
而忽略了调用它,这很容易意外地做到这一点。
>>> df = pd.DataFrame([[1],[-2],[3]], columns=['a'])
>>> df['a'] = df['a'].abs # BUG: Fills column with `method` object
>>> df['a'] = df['a'].astype('int')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3/dist-packages/pandas/core/generic.py", line 5881, in astype
new_data = self._data.astype(
File "/usr/lib/python3/dist-packages/pandas/core/internals/managers.py", line 581, in astype
return self.apply("astype", dtype=dtype, **kwargs)
File "/usr/lib/python3/dist-packages/pandas/core/internals/managers.py", line 438, in apply
applied = getattr(b, f)(**kwargs)
File "/usr/lib/python3/dist-packages/pandas/core/internals/blocks.py", line 559, in astype
return self._astype(dtype, copy=copy, errors=errors, values=values, **kwargs)
File "/usr/lib/python3/dist-packages/pandas/core/internals/blocks.py", line 643, in _astype
values = astype_nansafe(vals1d, dtype, copy=True, **kwargs)
File "/usr/lib/python3/dist-packages/pandas/core/dtypes/cast.py", line 711, in astype_nansafe
return lib.astype_intsafe(arr.ravel(), dtype).reshape(arr.shape)
File "pandas/_libs/lib.pyx", line 547, in pandas._libs.lib.astype_intsafe
TypeError: int() argument must be a string, a bytes-like object or a number, not 'method'
您需要查看您对该列所做的最后一件事,看看它是否不小心用方法对象填充了该列。如果是这样,请添加那些牛仔腿 ()
.
df['a'] = df['a'].abs()