首页 > 解决方案 > 使用 Python 将 DataFrame 转换为 JSON 数组

问题描述

我有这个数据框:

             A       B        C        D
16         USA    15.5     10.8      4.7
15     Germany    17.7     12.3      5.3

我想创建一个如下所示的 JSON 文件:

"data": [
   ["A", "B", "C", "D"],
   ["USA", "15.5", "10.8", "4.7"],
   ["Germany", "17.7", "12.3", "5.3],
]

to_dict()to_json()似乎不起作用。

这确实有效:

numpy_array = df.to_numpy()
column_headers = df.columns.values.tolist()
array_with_headers = numpy.vstack([column_headers, numpy_array])
json_object = {}
json_object["data"] = array_with_headers.tolist()

……虽然有点复杂。知道如何在没有 numpy 的情况下实现这一目标吗?非常感谢!

标签: pythonjsonpandas

解决方案


您可以将每一行转换为listusingapply然后调用to_list(),这将为您提供列表中的数据,您可以在其上调用json.dumps

import json
json.dumps({'data': df.reset_index(drop=True).T.reset_index().T.apply(list,axis=1).to_list()})

输出

'{"data": [["A", "B", "C", "D"], ["USA", 15.5, 10.8, 4.7], ["Germany", 17.7, 12.3, 5.3]]}'

PS:reset_index()并且 trasnposeT仅​​用于将列名放在第一行。


推荐阅读