Фильтр 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