初始化多个空pandas DataFrame是否有更优雅高效的方式
批量初始化空pandas DataFrame的优化方案
你当前逐行赋值初始化空DataFrame的写法重复冗余,以下是更简洁的替代实现,不同方案性能差异极小(空DataFrame构造本身开销在微秒级,完全不影响业务运行),核心优势是提升代码可维护性:
方案1:字典统一存储(最推荐)
把所有同类型的空DataFrame放到字典里管理,后续批量操作、排查问题都更方便,不会出现零散变量名写错的问题:import pandas as pd df_list = ["isd", "ind", "exd", "psd", "visd", "vind", "vexd", "sd", "ise", "idb", "mdd", "add"] df_map = {name: pd.DataFrame() for name in df_list} # 后续调用示例:取原来的isd变量直接写 df_map["isd"] 即可如果后续需要给所有df统一加字段、统一导出、统一做预处理,直接遍历
df_map.values()就能实现,不用重复写12次变量名。方案2:动态生成独立变量(不推荐,仅作补充)
如果你一定要保留原来独立变量的调用方式,可以通过修改全局命名空间动态赋值:import pandas as pd for name in ["isd", "ind", "exd", "psd", "visd", "vind", "vexd", "sd", "ise", "idb", "mdd", "add"]: globals()[name] = pd.DataFrame()注意:不要在函数内部用
locals()做同类操作,部分Python版本下局部命名空间的动态修改不会生效,会触发难以排查的bug。
额外性能优化提示
如果你提前知道这些DataFrame对应的列名、字段数据类型,初始化的时候直接指定列和dtype,比先生成空df再逐行追加/赋值数据的运行速度快数倍:
# 预定义列和类型的初始化示例 df = pd.DataFrame( columns=["user_id", "score", "create_time"], dtype={"user_id": "int64", "score": "float64", "create_time": "datetime64[ns]"} )
内容的提问来源于stack exchange,提问作者Saad Saleem
相关产品推荐
相关产品推荐

