You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复mypy报错:"Series[Any]" not callable [operator]

解决pandas代码中mypy报错"Series[Any]" not callable的问题

问题重现

你的代码:

import pandas as pd

df_data = pd.DataFrame(
    [
        {"a": 2, "b": 1},
        {"a": 2, "b": 10},
        {"a": 3, "b": 77},
    ]
)


df_data.groupby("a").size().to_frame("size")

mypy报错:

toy.py:12: error: "Series[Any]" not callable  [operator]
Found 1 error in 1 file (checked 1 source file)

报错原因

这是pandas-stub(pandas的类型定义文件)的bug:groupby.size()返回的Series对象,其to_frame方法被错误地定义成了属性而非可调用方法。mypy依据stub文件做类型检查,自然认为你在调用一个不能被调用的属性,从而抛出错误。

修复方法

方法1:用类型断言明确告知mypyto_frame是可调用方法

通过typing.cast强制指定to_frame的类型,让mypy识别它是可调用的:

import pandas as pd
from typing import cast, Callable

df_data = pd.DataFrame(
    [
        {"a": 2, "b": 1},
        {"a": 2, "b": 10},
        {"a": 3, "b": 77},
    ]
)

size_series = df_data.groupby("a").size()
# 断言to_frame是接收字符串参数并返回DataFrame的函数
result = cast(Callable[[str], pd.DataFrame], size_series.to_frame)("size")

方法2:临时忽略该行的mypy错误

如果不想改动代码结构,可以在报错行添加注释,让mypy跳过对该错误的检查:

df_data.groupby("a").size().to_frame("size")  # type: ignore[operator]

方法3:等待pandas-stub版本修复

这个问题属于类型定义文件的错误,后续pandas-stub更新时大概率会修复,你可以关注它的版本更新,升级到修复后的版本即可解决。

内容的提问来源于stack exchange,提问作者zyxue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 13:57:09