将Pandas Dataframe 和附加值合并到JSON文件中

xxhby3vn  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(127)

我创建了一个函数来输出JSON文件,并在其中输入了一个Pandas Dataframe 和一个变量。
Dataframe (df)有3列:"a"、"b"和"c"。

df = pd.DataFrame([[1,2,3], [0.1, 0.2, 0.3]], columns=('a','b','c'))

错误是具有浮点值的变量。

Error = 45

JSON文件的输出格式应如下所示:

{
"Error": 45,
"Data": [
    {
        "a": [1, 0.1]
    },
    {
        "b": [2, 0.2]

    },
    {
        "c": [3, 0.3]

    },

]}
我可以用下面的代码把 Dataframe 转换成JSON,但是我怎样才能得到想要的JSON文件格式呢?

def OutputFunction(df, Error):  

#json_output = df_ViolationSummary.to_json(orient = 'records')

df.to_json(r'C:\Users\Administrator\Downloads\export_dataframe.json', orient = 'records')

## Calling the Function 
OutputFunction(df, Error)
vbopmzt1

vbopmzt11#

调用to_dict(orient='list')将返回一个dictionary对象,其中每个键代表该列,值作为列表中的列值,这样就可以实现所需的json对象,如下所示:output = {"Error":Error, "Data": df.to_dict(orient='list')}.
运行此行将返回:

{'Error': 45, 'Data': {'a': [1.0, 0.1], 'b': [2.0, 0.2], 'c': [3.0, 0.3]}}

请注意,整数值将采用浮点格式,因为 Dataframe 中的一些值是浮点型的,因此列的数据类型变为浮点型。如果您确实希望使用混合类型,可以使用某种形式的Map/字典解析,如下所示,尽管在大多数情况下不需要:

output = {
    "Error":Error, 
    "Data": {
        col: [
            int(v) if v%1 == 0 else v 
            for v in vals 
        ] 
        for col,vals in df.to_dict(orient='list').items()
    }
}

相关问题