如何在循环中创建带指定编号列的多个DataFrame?
问题解决方法
错误原因分析
- 列名未动态生成:你代码里的
'value.i'是固定字符串,Python会尝试查找名为value.i的列,但实际你的列是value、value.1这类,需要动态拼接列名。 - 容器未初始化:直接使用
series[i]会报错,因为series没有预先定义为列表或字典。 - 数值赋值错误:
'i'是字符串常量,不是循环变量i,会导致number列全是字符串i而非预期的0、1等数值。
修正后的代码示例
假设你的列名规则是:当i=0时对应value,i≥1时对应value.i,可以用以下代码:
# 先初始化一个空列表来存储生成的DataFrame df_list = [] # 假设n是你要生成的DataFrame数量,这里示例n=3 n = 3 for i in range(n): # 动态确定value列名 value_col = 'value' if i == 0 else f'value.{i}' # 提取需要的列,用copy避免修改原DataFrame temp_df = df_new[['hour', 'minute', value_col]].copy() # 添加number列,值为当前循环的i temp_df.insert(0, 'number', i) # 将临时DataFrame加入列表 df_list.append(temp_df)
如果你的列名是从value.0开始的(比如value.0、value.1),可以简化列名拼接:
df_list = [] n = 3 for i in range(n): value_col = f'value.{i}' temp_df = df_new[['hour', 'minute', value_col]].copy() temp_df.insert(0, 'number', i) df_list.append(temp_df)
补充说明
- 使用
.copy()是为了避免后续修改临时DataFrame时影响原df_new。 - 生成的每个DataFrame都存在
df_list中,通过df_list[0]、df_list[1]可以访问对应结果。
内容的提问来源于stack exchange,提问作者Robin_hood_963
相关产品推荐
相关产品推荐

