0

我在任何地方都找不到这个,所以我希望有人可以帮助我。

我有一个用 tkinter 编写的窗口,其中包含一个 OptionMenu。OptionMenu 由数字 1 到 4 和选项“全部”组成:

在此处输入图像描述

现在这个 OptionMenu 被用作数据框的过滤器,问题马上就来了。之前,我只是简单地使用以下代码过滤数据框:

value_term = ['3']
df_filtered= df[(df['Term'].astype(str).isin(value_term))]

当每个数据框单元格中只有一个数字时,该方法有效:

在此处输入图像描述

选项“全部”有效,因为我使用了以下代码:

value_term = ['1', '2', '3', '4']

这使我无法过滤数据框。现在的问题是出现了新的情况,不能这样处理:

在此处输入图像描述

如您所见,此单元格包含两个用分号分隔的数字。我尝试使用此代码:

df_filtered= df[(df['Term'].astype(str).str.contains(value_term))]

当输入是一个数字(作为字符串)时,它适用,但我不知道如何确保在用户选择“全部”时不过滤列表。最接近的选择是:使用 if 语句,但我刚刚展示的代码只有一个过滤器,而实际代码有更多:

df_filtered= df[(df['Mandatory'].str.contains(value_track))
                          & (df['Term'].astype(str).isin(value_term))
                          & (df['Points'].astype(str).isin(value_ECTS))
                          & (df['Type'].isin(value_type))
                          & (df['TP'].isin(value_tech_ppd))
                          & (df['Theme'].isin(value_theme))]

有人知道该怎么做吗?

最好的,加内什

4

0 回答 0