如何通过循环生成带数字后缀命名的多个DataFrame?
问题解决方案
这里有两种常用实现方式,推荐优先用第一种字典存储的方案,代码维护性更高:
方案1:用字典存储所有子DataFrame(推荐)
把所有子表存在一个字典里,调用的时候直接取sub_df_dict['sub_df_1']格式即可,实现代码如下:
import pandas as pd df = pd.read_csv('https://raw.githubusercontent.com/justmarkham/pandas-videos/master/data/imdb_1000.csv') split_point = [0,10,25,168] sub_df_dict = {} n = len(split_point) for i in range(0, n-1): print("Dataset ", i+1, " - Record Range: ", split_point[i], '-', split_point[i+1]-1) # 按要求格式生成键名存储子表 sub_df_dict[f'sub_df_{i+1}'] = df.iloc[split_point[i]:split_point[i+1], :]
调用示例:需要读取第一个子表时,直接使用sub_df_dict['sub_df_1']即可。
方案2:动态生成全局变量(不推荐,易造成全局变量污染)
如果确实需要直接生成sub_df_1、sub_df_2这类可以直接调用的独立变量,可以通过globals()方法实现:
import pandas as pd df = pd.read_csv('https://raw.githubusercontent.com/justmarkham/pandas-videos/master/data/imdb_1000.csv') split_point = [0,10,25,168] n = len(split_point) for i in range(0, n-1): print("Dataset ", i+1, " - Record Range: ", split_point[i], '-', split_point[i+1]-1) # 动态生成对应命名的全局变量 globals()[f'sub_df_{i+1}'] = df.iloc[split_point[i]:split_point[i+1], :]
运行后即可直接调用sub_df_1、sub_df_2、sub_df_3三个子表变量。
内容的提问来源于stack exchange,提问作者Jingting Xu
相关产品推荐
相关产品推荐

