我有一个包含许多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
?我尝试过循环,但无法做到。
有出路吗?
答案 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)