Пустые строки встречаются несмотря на использование NOT NULL и <> '' - PullRequest
0 голосов
/ 01 февраля 2019

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

Я пробовал 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 ]

0 голосов
/ 13 февраля 2019

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

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

0 голосов
/ 01 февраля 2019

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

WHERE col IS NOT NULL AND NOT col ~ '^\s*$'
...