Pycharm (Jetbrains) 代码补全中缺少 Pandas 方法

问题描述 投票:0回答:1
import pandas as pd

series = pd.Series([])
series.str.extract("")

在编写上述代码时,我期望 pycharm 开始用可用的方法完成

series.str.ex...
。事实并非如此。

我期望使用

pd...
的示例: pd code completion

实际发生了什么:

series.str. completion

这适用于 VSCode,并且适用于大多数其他库。

Pycharm 2024.3

python pandas pycharm jetbrains-ide
1个回答
0
投票

答案:安装pandas-stubs

为什么:在

pandas/core/series
中,字符串方法定义为

    str = CachedAccessor("str", StringMethods)

CachedAccessor
是一个“自定义属性类对象”。
pandas/core/series
CachedAccessor
中都没有定义类型。将
str
行更改为

str: StringMethods = CachedAccessor("str", StringMethods) 

解决问题。这表明问题确实在于语言服务器无法弄清楚

str
方法应该是什么。

在Python中,向代码添加类型主要有两种方法。

  • 将它们添加到内联 IE 中,
    str: StringMethod
  • 根据 PEP 561
  • 将它们添加到仅存根包中

Pandas 选择走 PEP 561 路线,并提供仅存根包 pandas-stubs。 VSCode 没有与 pycharm 相同的问题的原因是 Pylance(VSCode python 语言服务器)包含开箱即用的

pandas-stubs
包。

存根已使用 mypy 和 Pyright 进行测试,目前随 Visual Studio Code 扩展 pylance 一起提供。

有关更多信息,您还可以查看 Pylance 发行说明和问题跟踪器

© www.soinside.com 2019 - 2024. All rights reserved.