如何将Pandas数据输出到JSON,以及数组中的特定列

时间:2019-04-30 13:22:43

标签: json python-3.x pandas dataframe

我需要逐行将Pandas数据框的一些结果输出到JSON。我已经整理了导出文件,效果很好,这是将某些列放入数组的详细信息。例如

Id   customerId   baseValue   targetValue
1    Customer1    482         306
2    Customer2    723         420
3    Customer3    279         161
4    Customer4    162         774

我需要以ID 1的样式导出

{"Id": "1",
 "customerId": "Customer1",
 "results": [{"baseValue": 482},
             {"targetValue": 306}
            ]
}

我被卡住了

"results": [{"baseValue": 482},
            {"targetValue": 306}
           ]

有指针吗?

谢谢

2 个答案:

答案 0 :(得分:0)

您尝试过吗:

df.to_json(orient="index")

答案 1 :(得分:0)

您可以尝试执行以下操作在数据框中创建“结果”列:

df.assign(results = df.apply(lambda x: [x[['baseValue','targetValue']].to_dict()], axis=1)).drop(['baseValue','targetValue'], axis=1).to_dict(orient='records')

输出:

[{'Id': 1,
  'customerId': 'Customer1',
  'results': [{'baseValue': 482, 'targetValue': 306}]},
 {'Id': 2,
  'customerId': 'Customer2',
  'results': [{'baseValue': 723, 'targetValue': 420}]},
 {'Id': 3,
  'customerId': 'Customer3',
  'results': [{'baseValue': 279, 'targetValue': 161}]},
 {'Id': 4,
  'customerId': 'Customer4',
  'results': [{'baseValue': 162, 'targetValue': 774}]}]