将pandas列表的json转换为

2024-10-03 04:32:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有熊猫数据帧的列表df_list。在这个列表中有4个数据帧,它们在列名和行数方面看起来很相似。在

一个示例数据帧,位于列表的索引0处:

df_list[0]

str_col          vals1               vals2
hi             [1,2,3,5]      [0.4,0.4,0.5, 0.1]
hagha          [1,3,3,5]      [0.1,0.4,0.5, 0.1]
me             [4,4,3,5]      [0.9,0.4,0.5, 0.1]
i know         [1,4,3,5]      [0.1,0.7,0.9, 0.0]

在所有数据帧中,str_col列保持不变。它不会改变。只有vals1vals2发生变化。vals1和{}是列表。str_col是字符串。在

最后我想要的是数据帧列表中的一个json:

^{pr2}$

下面是更好的版本:(请不要将vals1和vals2的值与上面的示例进行比较)。在

{
    "final_json": {
        "hi": {
            "0": {
                "vals1": [
                    1,
                    2,
                    3,
                    5
                ],
                "vals2": [
                    0.4,
                    0.4,
                    0.5,
                    0.1
                ]
            },
            "1": {
                "vals1": [
                    8,
                    5,
                    5,
                    3
                ],
                "vals2": [
                    1,
                    0,
                    0,
                    0
                ]
            },
            "2": {
                "vals1": [
                    2,
                    3,
                    6,
                    7
                ],
                "vals2": [
                    1,
                    0,
                    0,
                    0
                ]
            },
            "3": {
                "vals1": [
                    3,
                    3,
                    5,
                    3
                ],
                "vals2": [
                    1,
                    0,
                    0,
                    0
                ]
            }
        },
        "hagha": {
            "0": {
                "vals1": [
                    6,
                    8,
                    9,
                    0
                ],
                "vals2": [
                    0.76,
                    0.76,
                    0.36,
                    0.363
                ]
            },
            "1": {
                "vals1": [
                    2,
                    3,
                    4,
                    6
                ],
                "vals2": [
                    0.63,
                    0.36,
                    0.46,
                    0.6
                ]
            },
            "2": {
                "vals1": [
                    3,
                    6,
                    5,
                    5
                ],
                "vals2": [
                    0.4,
                    0.64,
                    0.46,
                    0.456                
                    ]
            },
            "3": {
                "vals1": [
                    4,
                    6,
                    3,
                    2                
                ],
                "vals2": [
                    0.657,
                    0.675,
                    0.64,
                    0.6                
                ]
            }



 .
 .
 .
 .
 .
                ]
            }
        }
    }
}

目前我正在循环列表中的所有数据帧,它太慢了。我想知道是否有更快的解决方案来实现这一点(mayto_json)?在


Tags: 数据字符串json示例df列表colhi
1条回答
网友
1楼 · 发布于 2024-10-03 04:32:31
import pandas as pd
import json
import pprint

我想您可以先用key的参数^{}列表来区分每个DataFrame

^{pr2}$

然后删除第一级MultiIndexgroupby,并创建{},最后通过^{}将输出转换为{}:

^{3}$

设置

df1 = pd.DataFrame({'str_col': ['hi', 'hagha', 'me', 'i know'], 'vals1': [[1, 2, 3, 5], [1, 3, 3, 5], [4, 4, 3, 5], [1, 4, 3, 5]], 'vals2': [[0.4, 0.4, 0.5, 0.1], [0.1, 0.4, 0.5, 0.1], [0.9, 0.4, 0.5, 0.1], [0.1, 0.7, 0.9, 0.0]]})
print (df1)
#  str_col         vals1                 vals2
#0      hi  [1, 2, 3, 5]  [0.4, 0.4, 0.5, 0.1]
#1   hagha  [1, 3, 3, 5]  [0.1, 0.4, 0.5, 0.1]
#2      me  [4, 4, 3, 5]  [0.9, 0.4, 0.5, 0.1]
#3  i know  [1, 4, 3, 5]  [0.1, 0.7, 0.9, 0.0]

df2 = pd.DataFrame({'str_col': ['hi', 'hagha', 'me', 'i know'], 'vals1': [[10, 20, 30, 50], [10, 30, 3, 5], [4, 4, 3, 5], [1, 4, 3, 5]], 'vals2': [[0.48, 0.48, 0.58, 0.18], [0.17, 0.47, 0.57, 0.17], [0.9, 0.4, 0.5, 0.1], [0.1, 0.7, 0.9, 0.0]]})
print (df2)
#  str_col             vals1                     vals2
#0      hi  [10, 20, 30, 50]  [0.48, 0.48, 0.58, 0.18]
#1   hagha    [10, 30, 3, 5]  [0.17, 0.47, 0.57, 0.17]
#2      me      [4, 4, 3, 5]      [0.9, 0.4, 0.5, 0.1]
#3  i know      [1, 4, 3, 5]      [0.1, 0.7, 0.9, 0.0]

#create list of DataFrames
dfs = [df1, df2]

相关问题 更多 >