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

如何将Pandas DataFrame转换为含JSON格式列的指定结构

Pandas DataFrame 转换方法

原始数据

import pandas as pd

df_installation = pd.DataFrame({
    'InstallationID': ["Item 1", "Item 2", "Item 3","Item 1", "Item 2", "Item 3"],
    'Type': ["Metric", "Metric","Metric", "Imperial","Imperial","Imperial"],
    'Measure 1': [11998, 11076,12025,129145,119221,129],
    'Measure 2': [12000,12001,12002,129168,129178.764,129189.528],
    'Measure Type': ["Morning","Afternoon","Evening","Morning","Afternoon","Evening"],
})

目标结构

df_installation_new = pd.DataFrame({
    'InstallationID': ['ID no1', "ID no2", "ID no3"],
    'Metric': [
        """{"text 1": {"label": "Measure Time","value": "Morning"},"text 2": {"label": "Measure 1","value": 11998},"text 3": {"label": "Measure 2","value": 12000}}""",
        """{"text 1": {"label": "Measure Time","value": "Afternoon"},"text 2": {"label": "Measure 1","value": 11076},"text 3": {"label": "Measure 2","value": 12001}}""",
        """{"text 1": {"label": "Measure Time","value": "Evening"},"text 2": {"label": "Measure 1","value": 12025},"text 3": {"label": "Measure 2","value": 12002}}"""
    ],
    'Imperial': [
        """{"text 1": {"label": "Measure Time","value": "Morning"},"text 2": {"label": "Measure 1","value": 129145},"text 3": {"label": "Measure 2","value": 129168}}""",
        """{"text 1": {"label": "Measure Time","value": "Afternoon"},"text 2": {"label": "Measure 1","value": 119221},"text 3": {"label": "Measure 2","value": 129178.764}}""",
        """{"text 1": {"label": "Measure Time","value": "Evening"},"text 2": {"label": "Measure 1","value": 129},"text 3": {"label": "Measure 2","value": 129189.528}}"""
    ],
})

转换实现

1. 定义JSON生成函数

用json.dumps将每行数据转换成指定格式的JSON字符串:

import json

def generate_json(row):
    return json.dumps({
        "text 1": {"label": "Measure Time", "value": row['Measure Type']},
        "text 2": {"label": "Measure 1", "value": row['Measure 1']},
        "text 3": {"label": "Measure 2", "value": row['Measure 2']}
    })

2. 生成JSON列并重构结构

通过apply生成JSON列,再用透视表将Type转为列,最后重命名ID:

# 生成JSON字符串列
df_installation['json_col'] = df_installation.apply(generate_json, axis=1)

# 透视表转换宽表结构
result_df = df_installation.pivot(
    index='InstallationID',
    columns='Type',
    values='json_col'
).reset_index()

# 重命名InstallationID值
result_df['InstallationID'] = result_df['InstallationID'].map({
    "Item 1": "ID no1",
    "Item 2": "ID no2",
    "Item 3": "ID no3"
})

# 调整列顺序与目标一致
result_df = result_df[['InstallationID', 'Metric', 'Imperial']]

# 得到最终结果
df_installation_new = result_df

验证结果

打印输出即可确认是否与目标结构匹配:

print(df_installation_new)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:01:45