首页 > 解决方案 > pandas.Dataframe 的列名和类型用 mypy 还是其他静态方式?

问题描述

我有一个func接受 a的函数pandas.Dataframe,数据框必须具有列:'col_foo', 'col_bar'并且它们的类型必须pd.Timestamp, np.integer确保func不会失败。

我将如何确保这些列以静态方式存在?


我可以做这样的事情:

def func(df: pd.Dataframe):
    cols_struct = {'col_foo': pd.Timestamp, 'col_bar': np.integer}
    # also check the columns types here
    if not set(df.columns).issuperset(cols_struct.keys()):
        raise ValueError('the dataframe must be structured like', cols_struct)
    

或者使用现有的库并使用装饰器巧妙地完成它。

但是我希望我的代码在mypy静态类型检查期间而不是在运行时失败,我将如何输入提示func

标签: pythonpandasstatic-analysistype-hintingmypy

解决方案


推荐阅读