Форум сайта python.su
Пользователь на форме заполнил отборы, которые хочет применить, и я в коде выполняю их:
for selection in self.selections: column_name = selection.column.get_name() value = selection.value compare_operation = selection.compare_operation if compare_operation == '=': data = data[data[column_name] == value] elif compare_operation == '!=': data = data[data[column_name] != value] elif compare_operation == '<': data = data[data[column_name] < value] elif compare_operation == '<=': data = data[data[column_name] <= value] elif compare_operation == '>': data = data[data[column_name] > value] elif compare_operation == '>': data = data[data[column_name] >= value]
data = data[data[col1] > value1 and data[col2] < value2 and data[col3] != value3]
Отредактировано antosha (Фев. 3, 2021 04:39:33)
Офлайн
Насчет dataframe не знаю, но в numpy вот так
# import numpy asn np a=np.arnage(20) ind= (a<5) & (a<10) | (a>15) & (a>10) a[ind]
Офлайн
doza_and
Насчет dataframe не знаю, но в numpy вот так
data[col1] > value1
data[col2] < value2
Отредактировано antosha (Фев. 3, 2021 13:16:42)
Офлайн
Может подойдёт функция all()
Офлайн
xam1816
Может подойдёт функция all()
Офлайн
Думаю, можно обычной конкатенацией строк соединить в одно условие, а потом использовать eval().
Офлайн
antoshaГде вы в посте написали что смысл в оптимизации???
Так смысл- то в оптимизации:
antoshaя и не обратил внимание что выполняете только одну операцию.
Как в коде делать отборы не по одному, а все разом?
data = data[data[col1] > value1 and data[col2] < value2 and data[col3] != value3]
Офлайн
antosha
Как в коде делать отборы не по одному, а все разом? Что- то типа:data = data[data[col1] > value1 and data[col2] < value2 and data[col3] != value3]
data = data[all((data[col1] > value1, data[col2] < value2, data[col3] != value3))]
>>> x = ['F', 'OK'][all((1 > 3, 3 > 2))] >>> x 'F' >>> x = ['F', 'OK'][all((1 < 3, 3 > 2))] >>> x 'OK' >>>
Equivalent to:def all(iterable): for element in iterable: if not element: return False return True
Офлайн
Какое- то сборище балбесов.
Офлайн
antoshaПокажи свой вариант решения или полный код,хочется посмотреть к чему надо стремиться…
Какое- то сборище балбесов.
Офлайн