如何仅用Python typing模块标注pandas DataFrame?kwtypes来源求解
用Annotated标注Pandas DataFrame列类型的正确方式
你看到的kwtypes不是Python标准typing模块的内容,它来自Pydantic 2.0及以上版本,是用来定义结构化类型关键字参数的工具,专门配合Annotated给DataFrame的列绑定类型约束。
具体实现步骤
- 先安装符合版本要求的Pydantic:
pip install pydantic>=2.0
- 正确的代码写法:
from typing import Annotated import pandas as pd from pydantic import kwtypes # 定义带列类型约束的DataFrame标注 Dataset = Annotated[pd.DataFrame, kwtypes( name=str, age=int, )] # 示例使用 valid_df = pd.DataFrame({'name': ['Alice', 'Bob'], 'age': [25, 30]}) # 如果列类型不匹配(比如age列传入字符串),后续用Pydantic验证会触发错误
额外验证功能
如果需要实际校验DataFrame是否符合定义的类型,可以用Pydantic的TypeAdapter:
from pydantic import TypeAdapter adapter = TypeAdapter(Dataset) # 校验DataFrame,不符合约束会抛出ValidationError adapter.validate_python(valid_df)
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

