self.myDataFrame = pd.read_csv("myCSV.csv")
def filterValues(self):
if self.h02_1_lineEdit != "":
self.h02_1_flag = 1
self.filter_h02_1 = (self.myDataFrame['H:02-1'] == self.h02_1_lineEdit.text())
else:
self.h02_1_flag = 0
if self.h02_x_lineEdit != "":
self.h02_x_flag = 1
self.filter_h02_x = (self.myDataFrame['H:02-X'] == self.h02_x_lineEdit.text())
else:
self.h02_x_flag = 0
# it will take 6 filters in here
print(self.myDataFrame[self.filter_h02_1 & self.filter_h02_x])
Привет, ребята, у меня есть c приложение в Python с DF для использования в приложении PyQt5. Как видите, я прочитал некоторые данные из файлов csv. И я хочу отфильтровать некоторые значения в соответствии с текстом, написанным на QLineEdit. Однако, если QLineEdit пуст, я не хочу его фильтровать. Но я не мог понять, как это сделать. В других приложениях я могу (и я это сделал) решить эту проблему с помощью флагов. т.е. Sql приложений. Но в этих приложениях мы используем запрос как строки. Так что это было легко использовать.
Моя настоящая проблема здесь - МНОЖЕСТВЕННАЯ ФИЛЬТРАЦИЯ, опять же, если каждое редактирование строки (6-строчное редактирование, которое я использовал) или одно редактирование строки отфильтровано, не вызывает проблем. Но, например, я не хочу использовать self.filter_h02_x и оставлять его пустым. Вот где я застрял. При необходимости я могу загрузить весь код, но я думаю, вы понимаете проблему.
Чтобы прояснить мой вопрос; Если мы можем использовать self.myDataFrame в качестве строки, я могу использовать
self.mainFilter = "self.myDataFrame[" # for definition
...
self.filter_h02_1 = "(self.myDataFrame['H:02-1'] == self.h02_1_lineEdit.text())"
...
if self.h02_1_flag = 1:
self.myDataFrame += self.filter_h02_1 + "]"
print(self.mainFilter)
Но это не строка, это определение. Если я попытаюсь определить их по очереди, их будет 6! варианты ...