Python中使用PyQt5应用程序的多重筛选数据帧

2024-10-02 00:32:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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])

大家好,我有一个基本的Python应用程序,可以在PyQt5应用程序上使用DF。如您所见,我从csv文件中读取了一些数据。我想根据写在QLineEdit上的文本过滤一些值。但是,如果QLineEdit为空,我不想过滤它。但是我不知道怎么做。在其他应用程序上,我可以(而且我确实)通过使用标志来解决这个问题。i、 e Sql应用程序。但在这些应用程序中,我们使用查询作为字符串。所以这很容易使用

我这里真正的问题是多重过滤,同样,如果每一行编辑(我使用的6行编辑)或一行编辑都过滤了,那么就没有问题。但是,例如,我不想使用self.filter\u h02\u 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个!选项


Tags: csv字符串textself应用程序编辑iffilter
1条回答
网友
1楼 · 发布于 2024-10-02 00:32:51

如果不想筛选,可以使用所有True的掩码

if self.h02_1_lineEdit.text() != "":
    self.filter_h02_1 = (self.myDataFrame['H:02-1'] == self.h02_1_lineEdit.text())
else:
    self.filter_h02_1 = [True] * len(myDataFrame)

相关问题 更多 >

    热门问题