相关疑难解决方法(0)

类型检查熊猫数据框

我想对Pandas DataFrames进行类型检查,即我想指定DataFrame必须具有哪些列标签以及其中dtype存储了哪种数据类型()。粗略的实现(受此问题启发)将像这样工作:

from collections import namedtuple
Col = namedtuple('Col', 'label, type')

def dataframe_check(*specification):
    def check_accepts(f):
        assert len(specification) <= f.__code__.co_argcount
        def new_f(*args, **kwds):
            for (df, specs) in zip(args, specification):
                spec_columns = [spec.label for spec in specs]
                assert (df.columns == spec_columns).all(), \
                  'Columns dont match specs {}'.format(spec_columns)

                spec_dtypes = [spec.type for spec in specs]
                assert (df.dtypes == spec_dtypes).all(), \
                  'Dtypes dont match specs {}'.format(spec_dtypes)
            return f(*args, **kwds)
        new_f.__name__ = f.__name__
        return new_f
    return check_accepts
Run Code Online (Sandbox Code Playgroud)

我不介意检查功能的复杂性,但是它增加了很多样板代码。

@dataframe_check([Col('a', int), Col('b', …
Run Code Online (Sandbox Code Playgroud)

python typechecking python-3.x pandas

5
推荐指数
1
解决办法
2014
查看次数

标签 统计

pandas ×1

python ×1

python-3.x ×1

typechecking ×1