Я не могу использовать операторы OR, AND для фильтрации строк в фрейме данных pandas

#python #pandas #dataframe

#python #панды #фрейм данных

Вопрос:

Часть набора данных

введите описание изображения здесь

 df[df['price'] == (df['price'].min()) | (df['price'].max())]
 

приведенный выше код выдает пустой набор данных, где он должен быть dataset с 4 строками

когда я выполнил приведенный ниже код, это сработало

 df1 = df[df['price'] == df['price'].min()]
df2 = df[df['price'] == df['price'].max()]
df3= pd.concat([df1,df2],ignore_index = True)
 

кто-нибудь может помочь

Ответ №1:

Вы не можете выполнить | логическое or подобным образом, вы должны попробовать два условия:

 df1 = df[(df['price'] == df['price'].min()) | (df['price'] == df['price'].max())]
 

Вы также можете использовать eq == знак равенства, чтобы избавиться от круглой скобки, вы можете удалить круглую скобку, только если в каждом условии есть только одно выражение, поэтому вы можете попробовать:

 df1 = df[df['price'].eq(df['price'].min()) | df['price'].eq(df['price'].max())]
 

Комментарии:

1. привет .. приведенный выше код не работает. это дает тот же результат

2. @VINAYDM Я отредактировал свой ответ, теперь он должен работать