在for循环中附加来自json文件的数据帧

2024-05-20 21:01:15 发布

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

我尝试遍历文件夹中的json文件,并将它们全部附加到一个pandas数据帧中。在

如果我说

import pandas as pd
import numpy as np
import json
from pandas.io.json import json_normalize
import os


directory_in_str = 'building_data'
directory = os.fsencode(directory_in_str)

df_all = pd.DataFrame()
with open("building_data/rooms.json") as file:
  data = json.load(file)
df = json_normalize(data['rooms'])
df_y.append(df, ignore_index=True)

我从一个文件中得到一个数据帧。如果我把这种想法变成for循环,我已经试过了

^{pr2}$

这将返回一个空的数据帧。有人知道为什么会这样吗?如果我在追加之前打印df,它将打印正确的值,因此我不确定它为什么不追加。在

谢谢你!在


Tags: 文件数据inimportjsonpandasdfdata
2条回答

我不想附加下一个数据帧,而是试着这样连接它们:

if df_all.empty:
    df_all = df
else:
    df_all = df_all.join(df)

当连接数据帧时,您可以指定它们应该连接的内容-在索引上或在特定(键)列上,以及如何连接(默认选项类似于附加-'left')。在

以下是关于pandas.DataFrame.join的文档。在

在这些实例中,我通过将每个文件返回的dict附加到列表中,将json中的所有内容加载到一个列表中。然后我将列表传递给pandas.DataFrame.from_recordsdocs

在这种情况下,来源会变成。。。在

import pandas as pd
import numpy as np
import json
from pandas.io.json import json_normalize
import os

directory_in_str = 'building_data'
directory = os.fsencode(directory_in_str)

json_data = []
for file in os.listdir(directory):
    with open(directory_in_str+'/'+filename) as file:
        data = json.load(file)
    json_data.append( json_normalize(data['rooms']) )

df_all = pandas.DataFrame.from_records( json_data )

print(df_all)

相关问题 更多 >