У меня есть функция, которая имеет дополнительные kwargs (всего 8), основанные на минимальных и максимальных значениях, введенных пользователем.
Например, GR_min, GR_max, GR_N_min, GR_N_max, Hi_min, Hi_max
и т. Д., Где столбцы данных: GR
, GR_N
, Hi
и т. Д. *
Я бы хотел, чтобы кадр данных фильтровал по заданным минимальным и максимальным значениям, но если в вызове функции не указано одно или несколько значений для установки значений по умолчанию минимальных и максимальных значений, равных только минимальным и максимальным столбцы.
Например, некоторый псевдокод:
df = pd.DataFrame({'GR': [1, 2, 3, 4, 2, 3],
'GR_N': [0.8, 0, 1, 0.6, 0.9, 1], 'Hi':[3, 6, 2, 5, 22, 7]})
Получает меня:
GR GR_N Hi
0 1 0.8 3
1 2 0.0 6
2 3 1.0 2
3 4 0.6 5
4 2 0.9 22
5 3 1.0 7
Мне нужна функция, которая делает что-то вроде этого:
def picker(data, **kwargs):
data_filtered = data[data['GR'].between(GR_min, GR_max) &
data['GR_N'].between(GR_N_min, GR_N_max) &
data['Hi'].between(Hi_min, Hi_max)]
return data_filtered
с выводом после вызова:
picker(data=df, GR_min=2, GR_max=3, Hi_min=1, Hi_max=6)
GR GR_N Hi
1 2 0.0 6
2 3 1.0 2
За исключением того, что вместо явного вызова каждого столбца кадра данных мы используем ** kwargs для фильтрации.
Есть ли способ сделать это?