Pandas如何不使用循环批量创建多个独立的相同行列数NaN空DataFrame
批量生成独立全NaN DataFrame方案
核心实现(无显式循环)
你可以通过生成器表达式配合解构赋值一次性生成所有独立DataFrame,无需编写重复代码,也不需要写多行显式循环逻辑:
import pandas as pd import numpy as np # 自定义参数:数据帧数量、行数、列数 df_count = 10 row_num = 15 col_num = 50 # 一次性生成10个独立的全NaN DataFrame,可直接通过变量名调用 df1, df2, df3, df4, df5, df6, df7, df8, df9, df10 = ( pd.DataFrame(np.nan, index=range(row_num), columns=range(col_num)) for _ in range(df_count) )
特性说明
- 独立性保证:每次调用
pd.DataFrame构造函数都会生成全新的内存对象,彼此没有引用关联,修改任意一个DataFrame的内容不会影响其他数据帧 - 灵活调整:修改
row_num、col_num参数即可自定义所有DataFrame的行列规格,列参数也可替换为自定义列名列表,比如columns=["字段1","字段2"...] - 批量处理适配:如果需要批量调用不同处理函数,可将生成的DataFrame存入列表,通过索引匹配对应处理函数即可:
df_list = [ pd.DataFrame(np.nan, index=range(row_num), columns=range(col_num)) for _ in range(df_count) ] # 按顺序为每个DataFrame指定处理函数 process_funcs = [处理函数1, 处理函数2, ..., 处理函数10] # 批量执行处理 processed_results = [process_funcs[i](df) for i, df in enumerate(df_list)]
额外可选方案
如果完全不想使用任何迭代语法,也可以直接编写10行构造语句,但该方式代码冗余,修改规格时需要同步修改10次,仅适合少量数据帧场景:
df1 = pd.DataFrame(np.nan, index=range(15), columns=range(50)) df2 = pd.DataFrame(np.nan, index=range(15), columns=range(50)) # ... 依次类推到df10
和原有实现的对比
直接通过DataFrame构造函数批量生成的方式,比逐列pd.concat拼接的效率高3~10倍(列数越多优势越明显),也避免了重复编写10行冗余代码的问题。
内容的提问来源于stack exchange,提问作者Suchana Ghosh
相关产品推荐
相关产品推荐

