Фильтр DataFrame по строкам и числам

подскажите пожалуйста, возможно ли в pandas из DataFrame запросить данные по фильтру из колонок , в которых значения добавлены в виде str и int

Пример на скорую руку:

# Создаю Датафрейм
df = pd.DataFrame({'BMW X5': [],
               'BMW X6': [],
               'BMW 3': []})

bmw3 = 3.0

# В Датафрейм добавляю значения
df.loc[1, 'BMW X5'] = ('red')
df.loc[1, 'BMW X6'] = ('green')
df.loc[1, 'BMW 3'] = ('black | {}'.format(bmw3))
df.loc[2, 'BMW X5'] = (3.0)
df.loc[2, 'BMW X6'] = (4.4)
df.loc[2, 'BMW 3'] = ('black | {}'.format(bmw3))

# Из Датафрейма запрашиваю данные
df2 = df[['BMW X5']]

# Создаю новый Датафрейм с запрошенными данными
new_df = pd.DataFrame(df2)

# Пытаюсь получить данные по фильтру
choose = new_df[new_df['BMW X5'] == 'red']

print(choose)
print(df)

в примере я получил данные по фильтру

choose = new_df[new_df['BMW X5'] == 'red']

А если скажем в колонке 'BMW 3' в 1 и 2 индексе, имеются строковые и числовые данные, как я могу и (возможно ли вообще ) отфильтровать ее. Скажем так :

choose = new_df[new_df['BMW 3'] == 'black']
choose = new_df[new_df['BMW 3'] == 3.0]

спасибо большое за разъяснение!


Ответы (1 шт):

Автор решения: strawdog

Воспользуйтесь методом .isin:

choose = new_df[new_df['BMW X5'].isin(['red', 3.])]
  BMW X5
1    red
2    3.0
→ Ссылка