类型提示 pandas 具有特定列的数据框
Type hinting pandas dataframe with specific columns
假设我有以下功能:
def foo(df: pd.DataFrame) -> pd.DataFrame:
x = df["x"]
y = df["y"]
df["xy"] = x * y
return df
有什么方法可以提示我的函数正在接受一个必须有“x”和“y”列的数据框,并且它将 return 一个带有“x”的数据框, “y”和“xy”列,而不仅仅是一个通用数据框?
好的,我不确定这是否是正确的实施方式,但似乎对我有用。如果您发现任何错误或替代方法,请告诉我,我可以编辑回复,但我的解决方案基本上是创建一个新的 class 并实施 Pep 560 中看到的 __class_getitem__
方法,这是我的最终代码:
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
假设我有以下功能:
def foo(df: pd.DataFrame) -> pd.DataFrame:
x = df["x"]
y = df["y"]
df["xy"] = x * y
return df
有什么方法可以提示我的函数正在接受一个必须有“x”和“y”列的数据框,并且它将 return 一个带有“x”的数据框, “y”和“xy”列,而不仅仅是一个通用数据框?
好的,我不确定这是否是正确的实施方式,但似乎对我有用。如果您发现任何错误或替代方法,请告诉我,我可以编辑回复,但我的解决方案基本上是创建一个新的 class 并实施 Pep 560 中看到的 __class_getitem__
方法,这是我的最终代码:
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