Я хочу удалить строки с условием ниже, но столкнулся с ошибкой ниже: Как мы можем удалить строки с двумя условиями с разными типами кариеса?
result['LastDigit']= result['IP'].str.strip().str[-1].astype(int)
result = result.drop(result[result['Type']=='A'] & result[result['LastDigit'] %2 ==0], axis=1)
ОШИБКА:
Exception has occurred: TypeError
unsupported operand type(s) for &: 'float' and 'bool'
Образец:
UniqueCode ID IP_Address Name Type LastDigit
0 QQ 22 172.16.1.67 Name1 A 7
2 XX 33 172.2.12.68 Name2 A 8
4 ZZ 44 10.21.22.2 Name3 B 2
Используйте логическое индексирование с инвертированной исходной маской по ~
, а также добавьте ()
, потому что приоритет операторов:
result = result[~((result['Type']=='A') & (result['LastDigit'] %2 ==0))]
Или инвертировать маски для теста, не равного |
для побитового OR
:
result = result[(result['Type']!='A') | (result['LastDigit'] %2 !=0)]
print (result)
UniqueCode ID IP_Address Name Type LastDigit
0 QQ 22 172.16.1.67 Name1 A 7
4 ZZ 44 10.21.22.2 Name3 B 2
@SaraDaniel - Можно ли добавить некоторые образцы данных, например 2-5 строк, для тестового решения?
Конечно, это было разделено.
@SaraDaniel - У меня работает хорошо, только что добавил в ответ.
Это я был виноват. Большое спасибо. Он работает правильно.
Я добавляю код, но ничего не происходит. Однако есть несколько строк с указанными условиями.