@NIKA_R

Как правильно проверить на Null\NaT поле фраймворка pandas и записать его в базу postgres?

Сам df
1      6850       Лужин       Евгений       Данилович    1962-09-05  3646 104301              None  +7 974 567-26-41        NaT
2      1244  Войтеховская      Ульяна      Эрнестовна    1976-03-18  9964 543377        2021-03-18  +7 953 827-27-94        NaT
3      0000          тест        тест         тест    1992-06-06     00000000        2030-10-20  +70000000000     2022-01-01
4      6948      Иванов      Максим   Станиславович    1973-04-05  8732 868620        2022-06-13  +7 914 996-22-46        NaT


Последняя колонка содержит "NaT" , в базе данных данное поле update_dt типа timestamp(0).

psycopg2.errors.InvalidDatetimeFormat: ОШИБКА: неверный синтаксис для типа timestamp: "NaT"

Если сделать так df = df.where(pd.notnull(df), 'Null').
psycopg2.errors.InvalidDatetimeFormat: ОШИБКА: неверный синтаксис для типа timestamp: "Null"
Как проверить на Null и записать данные timestamp не используя case (if) sql.
  • Вопрос задан
  • 1364 просмотра
Решения вопроса 1
gnifajio
@gnifajio
Совершенствуюсь каждый день
В pandas можно использовать функцию isnull для проверки поля на наличие значения NaN (Not a Number) или NaT (Not a Time). Например, чтобы проверить поле update_dt на наличие значения NaT, можно использовать следующий код:
df['update_dt'].isnull()
Этот код вернет булевый сериес, где True указывает на то, что в соответствующей ячейке поля update_dt стоит значение NaT, а False - значение присутствует.

Чтобы записать эти данные в базу данных, можно использовать конструкцию INSERT INTO ... SELECT ... FROM с вложенным запросом. Вот пример такого запроса, который записывает в таблицу table_name все записи из df, где поле update_dt не равно NaT:
INSERT INTO table_name (column1, column2, ..., update_dt)
SELECT column1, column2, ..., update_dt
FROM df
WHERE df['update_dt'].isnull() = False
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы