在这篇快速的文章中,我们将着重介绍几个例子,说明 如何用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,os 和json 。
接下来我们可以看看如何用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'。
