import pandas as pd
series = pd.Series([])
series.str.extract("")
在编写上述代码时,我期望 pycharm 开始用可用的方法完成
series.str.ex...
。事实并非如此。
我期望使用
pd...
的示例:
实际发生了什么:
这适用于 VSCode,并且适用于大多数其他库。
Pycharm 2024.3
答案:安装pandas-stubs。
为什么:在
pandas/core/series
中,字符串方法定义为
str = CachedAccessor("str", StringMethods)
CachedAccessor
是一个“自定义属性类对象”。 pandas/core/series
或 CachedAccessor
中都没有定义类型。将 str
行更改为
str: StringMethods = CachedAccessor("str", StringMethods)
解决问题。这表明问题确实在于语言服务器无法弄清楚
str
方法应该是什么。
在Python中,向代码添加类型主要有两种方法。
str: StringMethod
Pandas 选择走 PEP 561 路线,并提供仅存根包 pandas-stubs。 VSCode 没有与 pycharm 相同的问题的原因是 Pylance(VSCode python 语言服务器)包含开箱即用的
pandas-stubs
包。
存根已使用 mypy 和 Pyright 进行测试,目前随 Visual Studio Code 扩展 pylance 一起提供。
有关更多信息,您还可以查看 Pylance 发行说明和问题跟踪器。