Pandas DataFrame для MongoDB через JSON - PullRequest
0 голосов
/ 18 мая 2018

У меня есть файл данных pandas в форме

import pandas as pd    
df = pd.DataFrame([[1, 2], [3, 4]],
                      index=['2018-03-27 09:30:00', '2018-03-27 09:31:00'],
                      columns=['UNH', 'V'])

Я должен преобразовать его в формат JSON и затем сохранить в базе данных MongoDB.Чтобы создать файл JSON, я запускаю

xx = df.to_json(orient='index')
import json
with open('x_try.json', 'w') as outfile:
    json.dump(xx, outfile, indent=2)

, где xx выглядит следующим образом:

'{"2018-03-27 09:30:00":{"UNH":1,"V":2},"2018-03-27 09:31:00":{"UNH":3,"V":4}}'

Но потом, когда я запускаю (из терминала Ubuntu)

mongoimport --db db_name --collection c_name --file x_try.json

Я получаю

Failed: error unmarshaling bytes on document #0: JSON decoder out of sync - data changing underfoot?

Я пытался добавить опцию --jsonArray, но мне не ясно, где я должен добавить [...] скобки, так как я получаю

Failed: error reading separator after document #1: bad JSON array format - found no opening bracket '[' in input source

Я впервые использую монго и джсон, поэтому не знаю, что попробовать.

1 Ответ

0 голосов
/ 24 мая 2018

Я решил проблему, переместив индекс в новый столбец кадра данных pandas, затем используя orient='records' и используя простую .write() вместо функции json.dump():

import pandas as pd
df = pd.DataFrame([[1, 2], [3, 4]],
                  index=['2018-03-27 09:30:00', '2018-03-27 09:31:00'],
                  columns=['UNH', 'V'])
df.reset_index(level=0, inplace=True)

xx = df.to_json(orient='records')
with open('xx.json', 'w') as f:
    f.write(xx)

Так что файл xx.json

[{"index":"2018-03-27 09:30:00","UNH":1,"V":2},{"index":"2018-03-27 09:31:00","UNH":3,"V":4}]

Затем с терминала Ubuntu я использовал

mongoimport --db db_name --collection c_name --file xx.json --jsonArray

, и он работал.

Я думаю, что один из возможныхпроблема заключалась в том, что json.dump() использовалось для того, что уже было закодировано в формате json.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...