将多个JSON文件合并到Pandas数据框中的方法

在这篇快速的文章中,我们将着重介绍几个例子,说明 如何用Python读取和合并多个JSON文件到一个Pandas DataFrame中

如果你对合并CSV文件到DataFrame感兴趣,那么你可以查看这篇详细的文章。 如何用Python合并多个CSV文件

完整的代码:用Python和Pandas合并多个JSON文件

你可以在下面找到如何 合并多个JSON文件 的完整代码,并跟踪原文件:

import pandas as pd
import glob, os, json
json_dir = 'data/json_files_dir'
json_pattern = os.path.join(json_dir, '*.json')
file_list = glob.glob(json_pattern)
dfs = []
for file in file_list:
    with open(file) as f:
        json_data = pd.json_normalize(json.loads(f.read()))
        json_data['site'] = file.rsplit("/", 1)[-1]
    dfs.append(json_data)
df = pd.concat(dfs)

如果你想了解更多关于这段代码以及如何定制它。那么你可以查看接下来的步骤。

第1步:在一个文件夹中列出多个JSON文件

合并多个文件需要几个Python库,如。pandas,glob,osjson

接下来我们可以看看如何用Python列出一个文件夹中的JSON文件

import pandas as pd
import glob, os, json
json_dir = 'data/json_files_dir'
json_pattern = os.path.join(json_dir, '*.json')
file_list = glob.glob(json_pattern)

这将产生一个包含绝对JSON文件的列表,如:

['/data/json_files_dir/file1.json',
'/data/json_files_dir/file2.json'

注意:对于JSON行,你可能需要将匹配模式改为'*.jl'

第2步:读取并合并多个JSON文件到DataFrame中

最后,我们将逐一处理在上一步找到的所有JSON文件

我们用f.read() 读取文件,用json.loads 方法将它们加载为JSON记录。

最后,我们将用pd.json_normalize 来创建一个Pandas DataFrame。所有的DataFrames都被附加到一个列表中。

最后一步是将列表中的数据帧串联成一个单一的数据帧。pd.concat(dfs)

dfs = []
for file in file_list:
    with open(file) as f:
        json_data = pd.json_normalize(json.loads(f.read()))
        json_data['site'] = file.rsplit("/", 1)[-1]
    dfs.append(json_data)
df = pd.concat(dfs)

如果你想知道每条记录来自哪个文件--那么你可以使用这样一行。

json_data['site'] = file.rsplit("/", 1)[-1]

我们正在转换文件名中的绝对文件路径,所以:

'/data/json_files_dir/file1.json'。

将被保留为:

'file1.json'。

How to Merge Multiple JSON Files Into Pandas DataFrame

分类:
人工智能
标签: