Python 为每个唯一列使用嵌套json将csv转换为json

Python 为每个唯一列使用嵌套json将csv转换为json,python,json,pandas,Python,Json,Pandas,我有一个如下的csv文件: a b c d e f 1 3 6 11 16 21 1 4 7 12 16 21 2 3 8 13 18 23 2 4 9 14 18 23 2 5 10 15 18 23 我想从这个csv生成json,json看起来像 { {"a":1, "data":[{"b":3,"c":6,"d":11},{"b":4,"c":7,"d":12}], "e":16,

我有一个如下的csv文件:

a   b   c   d   e   f
1   3   6   11  16  21
1   4   7   12  16  21
2   3   8   13  18  23
2   4   9   14  18  23
2   5   10  15  18  23
我想从这个csv生成json,json看起来像

{
 {"a":1,
 "data":[{"b":3,"c":6,"d":11},{"b":4,"c":7,"d":12}],
 "e":16,
 "f":21},
{"a":2,
 "data":[{"b":3,"c":8,"d":13},{"b":4,"c":9,"d":14}, 
 {"b":5,"c":10,"d":15}],
 "e":18,
 "f":23}
}
这里e和f对于每个a是固定的,只有b,c,d在变化。如何使用python执行此操作。

与嵌套字典一起使用,然后通过以下方式转换为json:



如果要更改json文件中变量b、c和d的名称,例如,数据帧中变量的名称是b、c、d,我想在json文件中将它们更改为b1、c1、d1。如何做到这一点?@user10573224-我认为简单列表的重命名方式是
j=(df.rename(columns={'b':'b1','c':'c1','d':'d1')).groupby(['a','e','f')['b1','c1','d1'])。apply(lambda x:x.to_dict('r')).reset(index(name='data')。to(json(orient='records'))/code>@jezreal-如果要将a,e,f也重命名为a1,e1呢,f1与我对b、c和d的处理方法相同???@user10573224-使用与上面相同的方法,
j=(df.rename(columns={'b':'b1','c':'c1','d':'d1','a':'a1','e':'e1','f':'f1')。groupby(['a1','e1','f1'])['b1和'c1','c1','d1'])。应用(lambda x:x.to'u dict('r')。重置索引(name='data')to'json'u')。
j = (df.groupby(['a','e','f'])['b','c','d']
       .apply(lambda x: x.to_dict('r'))
       .reset_index(name='data')
       .to_json(orient='records')
       )
print (j)

[{
    "a": 1,
    "e": 16,
    "f": 21,
    "data": [{
        "b": 3,
        "c": 6,
        "d": 11
    }, {
        "b": 4,
        "c": 7,
        "d": 12
    }]
}, {
    "a": 2,
    "e": 18,
    "f": 23,
    "data": [{
        "b": 3,
        "c": 8,
        "d": 13
    }, {
        "b": 4,
        "c": 9,
        "d": 14
    }, {
        "b": 5,
        "c": 10,
        "d": 15
    }]
}]