Как решить Pandas Series к ошибке хранения sql? - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь импортировать CSV-файлы в DataFrame pandas и записать этот Dataframe в базу данных PostgreSQL.Однако после записи Dataframe в базу данных SQL в окончательной базе данных SQL появляются строки, которых нет в Dataframe.

Исходные файлы данных содержат некоторые ошибки измерения, которые хранятся как None, которые я заменяю в Dataframe как значения NaN через:

 modes['wspd [m/s]'].replace('None', np.NaN, inplace=True)

Затем я записываю Dataframe в базу данных SQL через:

result.to_sql( sql_table, schema='earth', con=engine, index=False, if_exists='replace', chunksize=10000)

Я использую размер фрагмента 10000, так как общий объем данных, который я пытаюсь записать, содержит 13 000 000 строк.Вот странная часть: в качестве примера строки 60-68 в кадре данных, которые я хочу записать в базу данных SQL, выглядят так:

date_time                 ...        cross_wnd [kt]                                       
2017-03-07T00:10:00       ...             -7.910255
2017-03-07T00:10:10       ...             -7.119229
2017-03-07T00:10:20       ...             -7.119229
2017-03-07T00:10:30       ...             -7.910255
2017-03-07T00:10:40       ...             -7.910255
2017-03-07T00:10:50       ...             -7.910255
2017-03-07T00:11:00       ...             -7.910255
2017-03-07T00:11:10       ...             -7.910255

Но в окончательной базе данных SQL те же строки 60-68 содержатновая строка с другой датой (и, следовательно, CSV-файл), в которой значение None заменено на NaN:

    date_time                 ...        cross_wnd [kt]
60  2017-03-07T00:10:00       ...             -7.910255
61  2017-03-07T00:10:10       ...             -7.119229
62  2017-03-07T00:10:20       ...             -7.119229
63  2017-03-07T00:10:30       ...             -7.910255
64  2017-03-07T00:10:40       ...             -7.910255
65  2017-03-25T10:54:30       ...                   NaN
66  2017-03-07T00:10:50       ...             -7.910255
67  2017-03-07T00:11:00       ...             -7.910255

Эта странная функция встречается каждые 66 строк только для 8 строк в файле CSV 2017-03-25, которые содержали None значения и были заменены.Остальные файлы обрабатываются правильно, значения None заменяются без каких-либо проблем, а остальная часть Dataframe сохраняется в базе данных SQL.

У любого есть идея, как это может произойти и что я могу сделать, чтобыреши это?Я мог бы просто удалить эти 8 строк в окончательной базе данных SQL, но я хотел бы использовать скрипт python для большего количества файлов данных.Может ли это быть из-за параметра inplace = True в функции замены?Или из-за большого количества строк, которые неправильно записываются в базу данных?

...