смог прочитать один файл, но не смог прочитать несколько файлов json из папки в информационный фрейм padas - PullRequest
0 голосов
/ 06 июня 2018

У меня есть папка с множеством файлов jason, скажем, папка «myfolder», а файлы: data1.json, data2.json, data3.json .... и т. Д.

Естьвсего 6 имен ключей, и все эти файлы jason имеют одинаковые имена ключей, скажем: col1, col2, col3, col4, col5 и col6 (то есть столбцы df, когда они преобразуются в фрейм данных)

Я хочучитать все эти файлы в одной панде (или любом другом фрейме данных).

Что я делаю, это:

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 голосов
/ 06 июня 2018

Вы можете составить список фреймов данных с помощью цикла 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...