Я пытаюсь открыть кучу файлов JSON, используя read_json
Чтобы получить Dataframe, как показано ниже.
ddf.compute()
id owner pet_id
0 1 "Charlie" "pet_1"
1 2 "Charlie" "pet_2"
3 4 "Buddy" "pet_3"
но я получаю следующую ошибку
_meta = pd.DataFrame(
columns=list(["id", "owner", "pet_id"]])
).astype({
"id":int,
"owner":"object",
"pet_id": "object"
})
ddf = dd.read_json(f"mypets/*.json", meta=_meta)
ddf.compute()
*** ValueError: Metadata mismatch found in `from_delayed`.
Мои файлы JSON выглядят так
[
{
"id": 1,
"owner": "Charlie",
"pet_id": "pet_1"
},
{
"id": 2,
"owner": "Charlie",
"pet_id": "pet_2"
}
]
Насколько я понимаю, проблема в том, что я передаю список диктов, поэтому я ищу правильный способ указать его аргумент meta=
ПД:
Я также пытался сделать это следующим образом
{
"id": [1, 2],
"owner": ["Charlie", "Charlie"],
"pet_id": ["pet_1", "pet_2"]
}
Но Dask неправильно интерпретирует данные
ddf.compute()
id owner pet_id
0 [1, 2] ["Charlie", "Charlie"] ["pet_1", "pet_2"]
1 [4] ["Buddy"] ["pet_3"]
Извините, забыл, это пустой фрейм данных pandas. Я добавил его в описание вопроса. спасибо за наводку!
Вызов, который вы хотите, следующий:
dd.read_json("data.json", meta=meta,
blocksize=None, orient = "records",
lines=False)
который можно в значительной степени почерпнуть из строки документации.
Так почему ошибка? Вероятно, Dask разделил ваш файл на какой-то символ новой строки, и поэтому была проанализирована частичная запись, которая, следовательно, не соответствовала вашей заданной мета.
Оно работает!! Большое спасибо !:D Я не понял опцию orient = "records". у меня теперь понятнее
Какой у тебя
_meta
?