从CSV和数组在Python中嵌套的JSON



我正试图从csv转换为复杂的嵌套json。下面是我的CSV的样子

样本csv

标题、section_id内容,预期

"测试case1", 1234年,"测试step1","预计Result1"

测试用例1",1234 "测试步骤2",预期结果">

测试用例1",1234 "测试步骤3",预期结果">

预期输出

'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'
}
]
}

目前的代码


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])

我希望这对你的情况有用。可以使用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')

我得到的输出是,

[
{
"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"
}
]
}
]