TypeError:类型别名不能与 isinstance() 一起使用

Posted

技术标签:

【中文标题】TypeError:类型别名不能与 isinstance() 一起使用【英文标题】:TypeError: Type aliases cannot be used with isinstance() 【发布时间】:2018-11-02 20:10:13 【问题描述】:

自从我将 pandas 升级到 0.23.0 后,运行一行以删除空格 df.any_column = df.any_column.str.replace(' ','')

我收到的错误消息如下:

/usr/local/lib/python3.5/dist-packages/pandas/core/strings.py in replace(self, pat, repl, n, case, flags, regex)
   2427     def replace(self, pat, repl, n=-1, case=None, flags=0, regex=True):
   2428         result = str_replace(self._data, pat, repl, n=n, case=case,
-> 2429                              flags=flags, regex=regex)
   2430         return self._wrap_result(result)
   2431

/usr/local/lib/python3.5/dist-packages/pandas/core/strings.py in str_replace(arr, pat, repl, n, case, flags, regex)
    637         raise TypeError("repl must be a string or callable")
    638
--> 639     is_compiled_re = is_re(pat)
    640     if regex:
    641         if is_compiled_re:

/usr/local/lib/python3.5/dist-packages/pandas/core/dtypes/inference.py in is_re(obj)
    217     """
    218
--> 219     return isinstance(obj, re_type)
    220
    221

/usr/lib/python3.5/typing.py in __instancecheck__(self, obj)
    258
    259     def __instancecheck__(self, obj):
--> 260         raise TypeError("Type aliases cannot be used with isinstance().")
    261
    262     def __subclasscheck__(self, cls):

TypeError: Type aliases cannot be used with isinstance().

我应该如何解决这个问题?

【问题讨论】:

有趣...df.any_column.dtype 是什么?你可以试试df.any_column = df.any_column.astype(str).str.replace(' ','')吗? 【参考方案1】:

这是 Python 3.5.2 及更低版本中的错误。要么升级你的 python(3.5.4 或更高版本应该可以工作),要么等到下一个 pandas 版本,其中包括修复:https://github.com/pandas-dev/pandas/pull/21098

【讨论】:

谢谢!我通过降级 Pandas 解决了这个问题。 或者,如果您由于某种原因(例如,如果您使用的是 Ubuntu 16.04 LTS)无法轻松升级您的 python,那么您可以在 pandas/compat/__init__.py 中更改此 if 条件 @Aerin,你降级到了哪个 Pandas?

以上是关于TypeError:类型别名不能与 isinstance() 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark 错误:TypeError:不能将类型 <type 'NoneType'> 视为向量 [重复]

为啥我不能用“无符号”来限定别名类型?

TypeError:不能将序列乘以“str”类型的非整数 - 将两列相乘后

TypeError:不能将序列乘以“float”类型的非整数(python 2.7)

python中的DES加密错误(TypeError:对象类型<class'str'>不能传递给C代码)

类型别名和元组结构之间有什么区别?