如何将 Python 数据框对象转换为 json?
Posted
技术标签:
【中文标题】如何将 Python 数据框对象转换为 json?【英文标题】:How to convert a Python dataframe object to json? 【发布时间】:2021-06-20 02:14:34 【问题描述】:我有一个这样的数据框:
date ... ID value_1 value_2 value_3
0 03/03/2018 ... 12345 111 1 30
1 03/03/2018 ... 89547 222 2 50
2 02/03/2018 ... 12345 333 5 80
我想把它转换成这样的 JSON 格式:
"XYZ": [
"Id": 123456,
"date": "2021-03-03 09:00:00", # this field need to change datetime format
"value_3": 30,
"value_2": 1,
"ABC": [
"value_1": 111,
"type": "int" # 'type' field will always be 'int'
]
,
"Id": 123456,
"date": "2021-03-02 09:00:00", # this field need to change datetime format
"value_3": 80,
"value_2": 5,
"ABC": [
"value_1": 333,
"type": "int" # 'type' field will always be 'int'
]
,
"Id": 89547,
"date": "2021-03-03 09:00:00", # this field need to change datetime format
"value_3": 50,
"value_2": 2,
"ABC": [
"value_1": 222,
"type": "int" # 'type' field will always be 'int'
]
]
我对 Python 中的数据操作不是很熟悉,有没有一种简单的方法来进行转换(内置函数或任何库?)?非常感谢。
【问题讨论】:
【参考方案1】:如果您使用 Pandas lib 来处理 DataFrame,它应该如下所示:
import pandas as pd
df = pd.DataFrame([["a", "b"], ["c", "d"]],
index=["row 1", "row 2"],
columns=["col 1", "col 2"],)
result = df.to_json(orient="split")
将您的 json 转换为 python 对象:
import json
parsed = json.loads(result)
【讨论】:
【参考方案2】:用途:
import json
#convert values to datetimes
df['documentdate'] = pd.to_datetime(df['documentdate'], dayfirst=True, errors='coerce')
#change format of ABC
df['ABC'] = df['value_1'].apply(lambda x: [ "value_1": x, "type": "int" ])
#remove columns
df = df.drop('value_1', axis=1)
#convert to dict and then to json
j = json.dumps("XYZ":df.to_dict(orient='records'), default=str)
print (j)
编辑:
对于转换日期时间也可以使用:
#https://***.com/a/11875813/2901002
from bson import json_util
import json
json.dumps("XYZ":df.to_dict(orient='records'), default=json_util.default)
【讨论】:
谢谢,如果可以的话,只是一个后续问题,如果我想在 json 中将value_3
显示为 VALUE_3
怎么办,最好的方法是什么?只需更改列名?
嗨@jezrael 谢谢你的回答,我意识到我需要的格式有点不同,我在这里提出了一个新问题***.com/questions/66788170/…,你也可以看看吗?非常感谢。以上是关于如何将 Python 数据框对象转换为 json?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 json 对象列表转换为单个 pyspark 数据框?
如何将一列数据框转换为具有json格式值的分布列(PYTHON)