You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何遍历DataFrame两列生成嵌套字典结构的元数据

解决DataFrame列元数据字典生成问题

核心思路

通过遍历DataFrame的列与对应数据类型,用原生字典赋值操作构建目标嵌套结构,避免误用Pandas拼接方法导致的TypeError,同时通过类型映射表适配未来新增的数据类型。

错误原因分析

你遇到的TypeError是因为错误地使用了Pandas的concat或类似DataFrame/Series操作来处理字典——这类方法仅支持Pandas数据结构,不兼容原生字典,必须改用Python原生字典的赋值逻辑。

完整实现代码

import pandas as pd

# 示例测试数据集
df = pd.DataFrame({
    "username": ["john_doe", "jane_smith"],
    "signup_year": [2020, 2021],
    "is_premium": [True, False],
    "account_balance": [125.75, 89.20],
    "last_login": pd.date_range("2024-01-01", periods=2)
})

# 初始化元数据基础结构
metadata = {"columns": {}}

# 定义数据类型映射表,可按需扩展新增类型
type_mapping = {
    "object": "string",
    "bool": "boolean",
    "int64": "integer",
    "float64": "float",
    "datetime64[ns]": "datetime"
}

# 循环填充每个列的元数据
for col_name, dtype in df.dtypes.items():
    dtype_str = str(dtype)
    # 优先使用映射表的友好名称,无匹配则保留原始类型字符串
    metadata["columns"][col_name] = {"type": type_mapping.get(dtype_str, dtype_str)}

# 输出结果
print(metadata)

输出示例

{
    "columns": {
        "username": {"type": "string"},
        "signup_year": {"type": "integer"},
        "is_premium": {"type": "boolean"},
        "account_balance": {"type": "float"},
        "last_login": {"type": "datetime"}
    }
}

扩展适配新数据类型

如果后续需要支持更多数据类型(如category类型),仅需在type_mapping中添加对应映射即可:

type_mapping.update({
    "category": "categorical"
})

内容的提问来源于stack exchange,提问作者PineNuts0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 21:10:29