You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在循环中创建带指定编号列的多个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 22:00:56