python - 键入具有特定列的提示 pandas 数据框

标签 python pandas type-hinting

假设我有以下功能:

def foo(df: pd.DataFrame) -> pd.DataFrame:
    x = df["x"]
    y = df["y"]
    df["xy"] = x * y

    return df

有没有一种方法可以暗示我的函数正在接受一个必须有“x”和“y”列的数据框,并且它将返回一个包含“x”、“y”和“xy”的数据框"列,而不仅仅是一般的数据框?

最佳答案

好的,所以,我不确定这是否是正确的实现方式,但似乎对我有用。如果您发现任何错误或替代方案,请告诉我,我可以编辑回复,但我的解决方案基本上是创建一个新类并实现 __class_getitem__ 方法,如 Pep 560 中所示,这是我的最终代码:

from typing import List
import pandas as pd


GenericAlias = type(List[str])

class MyDataFrame(pd.DataFrame):
    __class_getitem__ = classmethod(GenericAlias)


def foo(df: MyDataFrame[["x", "y"]]) -> MyDataFrame[["x", "y", "xy"]]:
    df["xy"] = df["x"] * df["y"]
    return df 

关于python - 键入具有特定列的提示 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69728330/

相关文章:

types - 在 Julia 中,您可以指定可调用函数参数的参数和返回值吗?

Clojure - 如何检查协议(protocol)中的类型提示是否正确?

python - 试图通过 python 子进程调用将 .mp3 转换为 .wav 到 ffmpeg, "No such file or directory"尽管音频文件在同一目录中?

python - 没有收到来自 Flask-Security 的信号

python - 使用 Python 原理图在必填字段中不允许任何内容

python - 创建新列时索引会自动替换

python - 识别非连续零的索引值

python - Beatbox:拉取SFDC数据时可以添加查询条件吗?

python - 类型提示适合函数参数而不是返回类型

python - 如何使用 Python Pandas 按列合并集合?