能够读取一个文件但无法从文件夹中读取多个json文件到padas数据帧

时间:2018-06-06 14:43:17

标签: python json pandas dataframe

我有一个包含许多jason文件的文件夹,比如文件夹是" myfolder"和文件是: data1.json,data2.json,data3.json ....等等。

共有6个密钥名称,这些jason文件都有相同的密钥名称,例如:col1,col2,col3,col4,col5和col6(即将这些名称转换为数据帧时的df列)

我想将所有这些文件读入一个pandas(或任何其他数据帧)。

我在做的是:

os.chdir("D:/myfolder/")
with open(json_files[0], encoding='utf-8') as data_file:
    data = json.loads(data_file.read())


df = json.loads(open('data1.json').read())

df = pd.io.json.json_normalize(df)
df.columns = df.columns.map(lambda x: x.split(".")[-1])

我得到一个文件的DF,但我不知道如何读取循环中的所有文件并附加df?我尝试过循环,但无法做到。

有出路吗?

1 个答案:

答案 0 :(得分:0)

您可以通过for循环创建数据框列表。然后使用pd.concat在最后一步中合并。

不建议继续附加到现有数据框,因为pd.DataFrame.append相对于list.append和单pd.concat次呼叫而言费用昂贵。

dfs = []

for file in json_files:
    df = json.loads(open(file).read())
    df = pd.io.json.json_normalize(df)
    df.columns = df.columns.map(lambda x: x.split('.')[-1])
    dfs.append(df)

df_full = pd.concat(dfs, ignore_index=True)