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

将CSV转嵌套JSON时,如何拆分DataFrame多值列生成对象数组?

解决方案

要实现将多值列转换为对象数组,需要先把逗号分隔的字符串拆分为列表,再将对应列的列表元素配对生成多个pattern对象,具体步骤如下:

1. 拆分多值列为列表并处理格式

首先对每个包含多值的列进行拆分,去除元素前后空格,并将frequency_count转换为整数类型(匹配你期望的JSON数字格式):

import pandas as pd

# 读取CSV(保留原逻辑)
df1_data = pd.read_csv(csv1, delimiter=';', keep_default_na=False, dtype=object)

# 拆分多值列并处理格式
df1_data['frequency_count'] = df1_data['frequency_count'].apply(
    lambda x: [int(i.strip()) for i in x.split(',')]
)
df1_data['schedule_type'] = df1_data['schedule_type'].apply(
    lambda x: [i.strip() for i in x.split(',')]
)
df1_data['day_of_week'] = df1_data['day_of_week'].apply(
    lambda x: [i.strip() for i in x.split(',')]
)

2. 生成patterns对象数组

通过apply遍历每一行,将拆分后的列表元素一一配对,生成包含多个pattern对象的数组:

nested_cols = ['frequency_count', 'schedule_type', 'day_of_week']

df1_data['patterns'] = df1_data.apply(lambda row: [
    {col: val for col, val in zip(nested_cols, vals)} 
    for vals in zip(*[row[col] for col in nested_cols])
], axis=1)

# 生成最终嵌套JSON
df1_nested2 = df1_data[['name', 'frequency', 'frequency_start_date', 'patterns', 'comments']].to_json(orient='records', indent=4)

效果说明

处理后,原本{"frequency_count": "1, 5", ...}的单对象格式会转换为:

[
    {"frequency_count": 1, "schedule_type": "...", "day_of_week": "..."},
    {"frequency_count": 5, "schedule_type": "...", "day_of_week": "..."}
]

注意事项

  • 确保每行的三个多值列拆分后的列表长度一致,否则zip会以最短列表为准截断多余元素;如果存在长度不一致的情况,可根据业务逻辑补充默认值或添加异常处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:02:48