python #pandas
#python #pandas
Вопрос:
У меня есть следующий фрейм данных pandas.
ID col1 col2 value
1 4 New 20
2 4 OLD 30
3 5 OLD 60
4 5 New 50
5 3 New 70
Я хотел бы выбрать только строки, которые имеют следующие правила. из col1
значений 4 и 3 должно быть in New
, а 5 должно быть Old
in col2
. Удалите другие строки другим способом.
ID col1 col2 value
1 4 New 20
3 5 Old 60
5 3 New 70
Может ли кто-нибудь помочь с этим в Python pandas?
Ответ №1:
Используйте DataFrame.query
с фильтром по in
цепочке по amp;
для побитового AND
и второго условия цепочки по |
для побитового OR
:
df1 = df.query("(col1 in [4,3] amp; col2 == 'New') | (col1 == 5 amp; col2 == 'OLD')")
print (df1)
ID col1 col2 value
0 1 4 New 20
2 3 5 OLD 60
4 5 3 New 70
Или использовать boolean indexing
с Series.isin
:
df1 = df[df['col1'].isin([3,4]) amp; df['col2'].eq('New') |
df['col1'].eq(5) amp; df['col2'].eq('OLD')]