我有一个像这样的数据框:
df:
Col1 col2 col3 col4
A 1 2 3
A 4 5 6
A 7 8 9
B 3 2 1
B 4 4 4
我想为每个col1值创建一个嵌套的json文件,在其内部将有col2,col3,col4作为键以及这些列的值,
输出应如下所示:
{
"col1": A,
"Other_details": {
"col2": 1,
"col3": 2,
"col4": 3
},{
"col2": 4,
"col3": 5,
"col4": 6
},{
"col2": 7,
"col3": 8,
"col4": 9
},
},
{
"col1": B,
"Other_details": {
"col2": 3,
"col3": 2,
"col4": 1
},{
"col2": 4,
"col3": 4,
"col4": 4
}
}
如何最有效地做到这一点
答案 0 :(得分:0)
将DataFrame.groupby
与DataFrame.apply
和DataFrame.to_dict
一起使用,所有没有由Index.difference
过滤的Col1
的列,由DataFrame.reset_index
创建DataFrame
最后使用DataFrame.to_dict
进行字典输出,或使用DataFrame.to_json
进行json
输出:
cols = df.columns.difference(['Col1'])
d = (df.groupby('Col1')[cols]
.apply(lambda x: x.to_dict('r'))
.reset_index(name='Other_details')
.to_dict(orient='records'))
cols = df.columns.difference(['Col1'])
d = (df.groupby('Col1')[cols]
.apply(lambda x: x.to_dict('r'))
.reset_index(name='Other_details')
.to_json(orient='records'))