简体   繁体   English

在 Python 中使用数组从 CSV 转换为嵌套 JSON

[英]Convert from CSV to Nested JSON with array in Python

I'm trying to convert from csv to complex nested json.我正在尝试从 csv 转换为复杂的嵌套 json。 Below is how my CSV looks like下面是我的 CSV 的样子

Sample csv样本 csv

title,section_id,content,expected标题,section_id,内容,预期

"Test case1",1234,"Test step1","Expected Result1" "测试用例1",1234,"测试步骤1","预期结果1"

"Test case1",1234,"Test step2","Expected Result2" "测试用例1",1234,"测试步骤2","预期结果2"

"Test case1",1234,"Test step3","Expected Result3" "测试用例1",1234,"测试步骤3","预期结果3"

Expected output预期产出

  'title': 'Test case 1',
  'section_id': 1234,
  'custom_steps_separated': [
    {
      'content': 'Test step1',
      'expected': 'Expected Result 1'
    },
    {
      'content': 'Test step2',
      'expected': 'Expected Result 2'
    },
    {
      'content': 'Test step3',
      'expected': 'Expected Result 3'
    }
  ]
}

Code so far到目前为止的代码


import pandas as pd
df = pd.read_csv('testcases.csv')
df['custom_steps_separated'] = df[['content','expected']].to_dict('records')
out = df[['title','section_id','custom_steps_separated']].to_json(orient='records', indent=4)
jsondict = json.loads(out)
for i in range(0,len(jsondict)):
 print(list(jsondict)[i])

I hope this will work for your case.我希望这对你的情况有用。 You can use groupby您可以使用groupby

import pandas as pd
df = pd.DataFrame({'title':["Test case1","Test case1","Test case1"],
                               'section_id':['1234','1234','1234'],'content':["Test step1","Test step2","Test step3"],'expected':["Expected Result1","Expected Result2","Expected Result3"]})

df.groupby(['title','section_id']).apply(lambda x: x[['content','expected']].to_dict('records'))
       .reset_index()
       .rename(columns={0:'custom_steps_separated-Data'})
       .to_json(orient='records')

the output what i got is,我得到的输出是,

[
    {
        "title": "Test case1",
        "section_id": "1234",
        "custom_steps_separated-Data": [
            {
                "content": "Test step1",
                "expected": "Expected Result1"
            },
            {
                "content": "Test step2",
                "expected": "Expected Result2"
            },
            {
                "content": "Test step3",
                "expected": "Expected Result3"
            }
        ]
    }
]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM