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

0 ответов

Другие вопросы по тегам