Как решить Pandas Series к ошибке хранения sql?
Я пытаюсь импортировать 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 в функции замены? Или из-за большого количества строк, которые неправильно записываются в базу данных?