如何将DataFrame的dtypes转换为字典列表用作BigQuery表schema?
Pandas DataFrame 转 BigQuery Schema 实现方案
核心逻辑
先建立Pandas数据类型到BigQuery标准数据类型的映射规则,之后遍历DataFrame的所有列,按规则批量生成符合要求的字典列表即可,支持任意列数的DataFrame快速转换。
实现代码
import pandas as pd # Pandas dtype 到 BigQuery 数据类型的映射规则,可按需扩展 TYPE_MAPPING = { "object": "STRING", "int64": "INTEGER", "Int64": "INTEGER", "float64": "FLOAT", "Float64": "FLOAT", "bool": "BOOLEAN", "boolean": "BOOLEAN", "datetime64[ns]": "TIMESTAMP", "datetime64[ns, UTC]": "TIMESTAMP", "timedelta64[ns]": "TIME" } def generate_bq_schema(df: pd.DataFrame) -> list[dict]: schema = [] for col_name, dtype in df.dtypes.items(): # 匹配不到的类型默认转为STRING,避免报错 bq_type = TYPE_MAPPING.get(str(dtype), "STRING") schema.append({"name": col_name, "type": bq_type}) return schema # 调用示例 # 替换为你自己的DataFrame变量即可 # bq_schema = generate_bq_schema(your_df)
注意事项
- 如果业务需要使用
STRUCT、JSON、BYTES等特殊BigQuery类型,直接在TYPE_MAPPING中补充对应Pandas类型的映射即可 - 建议生成schema后抽验几列的类型是否符合预期,避免部分混合类型的列被误映射为STRING
- 生成的结果可直接传入
to_gbq方法、BigQuery Python客户端的建表/load接口使用,无需额外调整
内容的提问来源于stack exchange,提问作者Basley
相关产品推荐
相关产品推荐

