Pandas筛选字典中不含指定EVENTMSGTYPE值的DataFrame
问题解决:筛选DataFrame并存入新字典
嘿,这事儿其实用Python的字典推导式就能轻松搞定,既简洁又高效。咱们一步步来:
首先,先定义你要排除的EVENTMSGTYPE值列表:
exclude_event_types = [3,5,6,7,8,9,10,11,12,13]
然后,直接用字典推导式遍历你的dfs字典,对每个DataFrame做筛选,把符合条件的结果存入新字典(比如叫filtered_dfs):
filtered_dfs = { key: df[~df['EVENTMSGTYPE'].isin(exclude_event_types)] for key, df in dfs.items() }
代码解释:
~符号是取反操作,把isin()返回的布尔序列翻转,也就是保留不在排除列表里的行df['EVENTMSGTYPE'].isin(exclude_event_types)会生成一个布尔列,标记每行的EVENTMSGTYPE是否在排除列表中- 字典推导式会自动遍历原字典的所有键值对,完成筛选后生成新字典
可选的容错处理(如果有的DataFrame可能没有EVENTMSGTYPE列):
如果你的dfs字典里存在没有EVENTMSGTYPE列的DataFrame,可以加个判断跳过或者直接保留原数据:
filtered_dfs = { key: df[~df['EVENTMSGTYPE'].isin(exclude_event_types)] if 'EVENTMSGTYPE' in df.columns else df for key, df in dfs.items() }
这样处理后,filtered_dfs就是你想要的存储了筛选后DataFrame的新字典啦!
内容的提问来源于stack exchange,提问作者ThP
相关产品推荐
相关产品推荐

