您收到该错误是因为该列中至少有一个 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()