我在任何地方都找不到这个,所以我希望有人可以帮助我。
我有一个用 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))]
有人知道该怎么做吗?
最好的,加内什