Пустые строки появляются несмотря на использование NOT NULL и <> ''

Я пытаюсь удалить все пустые / пустые ячейки из моей таблицы. Однако у меня остаются пустые ячейки даже после того, как я пытаюсь удалить их с помощью вышеупомянутых методов в заголовке.

я пробовал NOT NULL а также <> '' Точно так же я пытался >0, Кажется, ни один из них не удаляет пустые клетки. Я не уверен, что это может быть другой тип. Столбцы varchar поэтому трудно определить, что это такое.

Кажется, никто не сталкивался с этим, так как я не смог найти ни одной подобной статьи или проблемы. Эта таблица - невероятный беспорядок, поскольку везде есть явные несоответствия.

Заявление, которое я использую:

SELECT * FROM table WHERE column is NOT NULL AND column <> ''

В идеале все пустые ячейки исчезли бы, чтобы я мог быть уверен, что мои Pandas df точны.

Мой код на Python находит около 2000 "нулевых" записей в таблице:

def enumerate_null_data(df):
    #pandas doesn't support blank strings or None distinguishments with isnull/isna, so we replace those with np.NaN
    #a data type that is consistent with its archictecture/is handled properly
    df['rfid_sent'].replace(['', None], np.nan, inplace=True)
    df['rfid_received'].replace(['', None], np.nan, inplace=True)
    #dataframe that no longer contains the null values
    sent_null_removed = df.dropna(subset=['rfid_sent'])
    received_null_removed = df.dropna(subset=['rfid_received'])

    #create a dataframe that has all of the entries that were removed from sent_null_removed/received_null_removed
    #and count them (get the length of that dataframe)
    num_sent_null_removed = len(df[~df.index.isin(sent_null_removed.index)].index)
    num_received_null_removed = len(df[~df.index.isin(received_null_removed.index)].index)


    # dataframe containing only the values that were null/NA
    na_only = df[~df.index.isin(sent_null_removed.index) | ~df.index.isin(received_null_removed.index)]

    return (na_only, num_sent_null_removed, num_received_null_removed)

Я, честно говоря, понятия не имею, что еще попробовать. Есть ли какой-нибудь пустой формат, который мне здесь не хватает? Панды распознали пустые клетки как: '', Empty, None а также np.nan, Да, все разнообразие.:S

2 ответа

Решение

Решение этой проблемы было связано с распознаванием образов с использованием Regex. В частности, я пробовал большое количество решений, которые отфильтровывали любые формы ошибочных типов данных, которые могли бы испортить таблицу данных. К сожалению, решение оказалось не таким простым.

Тем не менее, данные (которые я ожидаю / хочу сохранить) очень согласованы по структуре, и поэтому я просто использовал RegEx для фильтрации любых таких записей данных, которые не соответствовали моим ожиданиям.

Вероятно, в столбце хранятся пробелы или другие пробельные символы. Попробуйте вот так:

WHERE col IS NOT NULL AND NOT col ~ '^\s*$'
Другие вопросы по тегам