#python #pandas
#python #pandas
Вопрос:
Ниже приведено объявление pandas dataframe:
email score
a@domain.com A
b@domain.com A
c@domain.com C
d@domain.com B
Я хочу исключить строки с помощью email
a@domain.com
и c@domain.com
.Ожидайте результат, как показано ниже:
email score
b@domain.com A
d@domain.com B
Я пробовал 3 раза, но безуспешно:
df=df[df.email !='a@domain.com' amp; df.email !='c@domain.com' ]
TypeError: cannot compare a dtyped [object] array with a scalar of type [bool]
df=df[df.email !='a@domain.com' amp;amp; df.email !='c@domain.com' ]
SyntaxError: invalid syntax
df=df[df.email !='a@domain.com' | 'c@domain.com' ]
TypeError: unsupported operand type(s) for |: 'str' and 'str'
В чем проблема?
Ответ №1:
Вы должны заключить это в круглые скобки:
df = df[(df.email != 'a@domain.com') amp; (df.email != 'c@domain.com')]
Тем не менее, было бы проще с isin
:
df = df[~df.email.isin(['a@domain.com', 'c@domain.com'])]
И теперь:
print(df)
Это будет ожидаемый результат.
Комментарии:
1. что
~
вdf = df[~df.email.isin(['a@domain.com', 'c@domain.com'])]
?2. @kittygirl
isin
означает, содержит ли он какой-либо элемент в списке, но поскольку это те, которые вам не нужны, используйте этот знак, чтобы получить противоположное значение и удалить их.3. Почему бы и нет,
!
но~
?4. @kittygirl Это очень хороший момент, но в pandas все по-другому, вы должны использовать
~