Словарь - это опция для хранения скачек и лошадей, в которой вам не нужно создавать ненужные переменные каждый раз, когда вы запускаете новую настройку фильтрации, здесь я использую словарь с ключами = скачками и значениями = списком лошадей
d = {1:[1,2],2:[1]}
Теперь вы можете использовать функцию query
, которая принимает строку запроса. Это может быть сделано путем перебора словаря
query_str = ' | '.join(['((R == {x}) and (H in {y}))'.format(x=x,y=y) for x,y in d.items()])
В этом примере строка, сгенерированная с помощью списка comp, будет выглядеть следующим образом
((R == 1) and (H in [1, 2])) | ((R == 2) and (H in [1]))
Теперь вы можете запустить
df.query(query_str)
и получите
Date Fin H R Win
0 11182017 2 1 1 0
1 11182017 1 2 1 5
3 11182017 2 1 2 0
Дополнительные примечания по вводу данных пользователем для создания словаря
Код
d = {}
x = input('Add races ')
for i in x:
d[i] = list(input('Add Horses for Race: {} '.format(i)))
print d
Пробный прогон
Add races 1,2,3
Add Horses for Race: 1 1,2
Add Horses for Race: 2 2,3
Add Horses for Race: 3 3,4
{1: [1, 2], 2: [2, 3], 3: [3, 4]}