Ошибка типа: ufun c 'инвертировать' не поддерживается для типов ввода - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь удалить строки в моем фрейме данных

Столбец

Field:FacilityCode
mama100
mimba190
mama1
mimba67
#delete invalid code from df
df = df[~df['Field:FacilityCode'].str.len()>8] | df[~df['Field:FacilityCode'].str.len()>7]   

ожидаемый вывод

Field:FacilityCode
mama100
mimba190

здесь такое ошибка

TypeError: ufunc 'invert' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'''

Как я могу это исправить ??

1 Ответ

1 голос
/ 09 апреля 2020

Потому что если длина больше, чем 7, это значит больше, чем 8 решение должно быть упрощено - получить все строки, если длина меньше или равна 7:

df = df[df['Field:FacilityCode'].str.len()<=7]   

Но ваше решение возможно:

df[~(df['Field:FacilityCode'].str.len()>8) | ~(df['Field:FacilityCode'].str.len()>7)]

РЕДАКТИРОВАТЬ: из выходных данных условие >7 для фильтра равным или выше, как 7:

df = df[df['Field:FacilityCode'].str.len()>=7]

print (df)
  Field:FacilityCode
0            mama100
1           mimba190
3            mimba67
...