如何在Pandas中批量筛选多个DataFrame的指定行(time=0)以简化代码?
解决方法
这问题我之前也碰到过,重复写筛选代码确实烦!给你两个简洁的方案,看你需求选:
方案1:用字典统一管理(推荐)
把所有需要处理的DataFrame放进一个字典里,用字典推导式批量完成筛选,既整洁又方便后续复用:
# 先把原DataFrames存入字典,键对应原变量名 dfs = {'a': a, 'b': b, 'c': c, 'd': d, 'e': e} # 批量筛选time=0的行,结果存在新字典里 base_dfs = {name: df[df['time'] == 0] for name, df in dfs.items()}
之后你可以通过base_dfs['a']、base_dfs['b']来访问处理后的结果,这种方式的好处是能把相关的DataFrame统一管理,后续如果还要做其他批量操作(比如合并、导出),直接遍历字典就行,不会让命名空间乱糟糟的。
方案2:自动生成单独变量(适合简单场景)
如果你还是希望得到a_base、b_base这类单独的变量,可以借助globals()来批量赋值,省去手动逐个定义的麻烦:
# 同样先把原DataFrames存入字典 dfs = {'a': a, 'b': b, 'c': c, 'd': d, 'e': e} # 遍历字典,自动创建对应_base后缀的变量 for name, df in dfs.items(): globals()[f"{name}_base"] = df[df['time'] == 0]
执行完这段代码后,你就能直接用a_base、b_base这些变量了,不过要注意:这种方式会直接修改全局命名空间,在复杂项目里可能引发变量名冲突,所以更适合简单的脚本或者Notebook场景。
内容的提问来源于stack exchange,提问作者Jared
相关产品推荐
相关产品推荐

