Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用for循环读取json dict并写入数据帧_Python_Json_Pandas - Fatal编程技术网

Python 使用for循环读取json dict并写入数据帧

Python 使用for循环读取json dict并写入数据帧,python,json,pandas,Python,Json,Pandas,我试图迭代一个JSON dict并将所选对象写入pandas数据帧,然后在最后计算两列之间的相关性 数据帧应如下所示: calc val 20.1 20 20.2 20 19.8 20 ... ... 10.1 10 10.3 10 9.8 10 ... ... 5.2 5 5.1 5 5.0 5 ... ... { "20um PSL": [ { "imgs

我试图迭代一个JSON dict并将所选对象写入pandas数据帧,然后在最后计算两列之间的相关性

数据帧应如下所示:

calc  val
20.1  20
20.2  20
19.8  20
...   ...
10.1  10
10.3  10
9.8   10
...   ...
5.2   5
5.1   5
5.0   5
...   ...

{
    "20um PSL": [
            {
                "imgsize": 20.886688245888603,
                "trigsize": 20.87416236786009,
                ...
            }
                "imgsize": 20.886688245888603,
                "trigsize": 20.87416236786009,
                ...
            {...}
            ...
    ]
        
    "10um PSL": [
        {
                "imgsize": 10.886688245888603,
                "trigsize": 10.87416236786009,
                  ....
        }
        {...}
            ...
    ]
            
    "5um PSL": [
        {
                "imgsize": 5.886688245888603,
                "trigsize": 5.87416236786009,
                  ....
        }
        {...}
        ...
    ]
}
我的JSON dict如下所示:

calc  val
20.1  20
20.2  20
19.8  20
...   ...
10.1  10
10.3  10
9.8   10
...   ...
5.2   5
5.1   5
5.0   5
...   ...

{
    "20um PSL": [
            {
                "imgsize": 20.886688245888603,
                "trigsize": 20.87416236786009,
                ...
            }
                "imgsize": 20.886688245888603,
                "trigsize": 20.87416236786009,
                ...
            {...}
            ...
    ]
        
    "10um PSL": [
        {
                "imgsize": 10.886688245888603,
                "trigsize": 10.87416236786009,
                  ....
        }
        {...}
            ...
    ]
            
    "5um PSL": [
        {
                "imgsize": 5.886688245888603,
                "trigsize": 5.87416236786009,
                  ....
        }
        {...}
        ...
    ]
}
这是我目前的代码:

    sizes = ['20um PSL', '10um PSL', '5um PSL']
    for file in json_data[sizes[0]]:
        particles_0 = pd.DataFrame({'calc': file['trigsize'], 'val': sizes_list[0]})
    for file in json_data[sizes[1]]:
        particles_1 = pd.DataFrame({'calc': file['trigsize'], 'val': sizes_list[1]})
    for file in json_data[sizes[2]]:
        particles_2 = pd.DataFrame({'calc': file['trigsize'], 'val': sizes_list[2]})
    df = particles_0.append([particles_1, particles_2])
    df.reset_index(drop=True, inplace=True)  # reorder index
我的困难在于,不知何故,始终只有最后一个“trigsize”值加载到数据帧中。我知道这在某种程度上是我的循环的一个错误,我需要更改迭代。由于我是Python初学者,我似乎没有找到这个问题的逻辑解决方案。 最后,我需要计算Calc中的数字如何与val相关的相关性(在本例中总是20、10、5)。有没有更好的解决办法?(而不是创建数据帧?)

迄今为止的数据帧:

calc  val
20.1  20
20.1  20
20.1  20
...   ...
10.1  10
10.1  10
10.1   10
...   ...
5.0   5
5.0   5
5.0   5
...   ...


在我看来,循环的每一次迭代都会覆盖你的粒子。这也解释了为什么只剩下最后一行

您可能必须首先收集您在dict或类似文件中迭代的数据,然后在完成所有操作后构建数据框架

编辑:


嗨,克里斯蒂安。是的,我知道我正在以某种方式覆盖我最后的数据。但我的大脑似乎已经无法建立逻辑循环了。你有什么建议吗?我自己还不专业,但我会这样做:
data=[]size=['20um PSL'、'10um PSL'、'5um PSL']对于大小为大小的文件:对于json_数据中的文件[size]:data.append((file['trigsize'],size\u list[0])df=pd.DataFrame(数据,索引=[“calc”,“val]”)
很抱歉-我不知道如何标记此代码以使其正确可读。我将其作为编辑添加到我的主要答案中。谢谢!它起了作用。我必须在大小列表中添加一个计数器变量,以便将其附加到正确的大小:
数据=[]大小=['20um PSL',10um PSL',5um PSL']w=0表示大小:表示json_数据中的文件[size]:data.append((file['trigsize',y_verifcsize[w])w+=1 df=pd.DataFrame(data,columns=[“calc”,“val”])
(如果您可以添加计数器,我会将其标记为answerd:)这是真的-我忽略了其他变量的索引。谢谢,我添加了它:)