Пустые строки появляются несмотря на использование 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*$'