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

Python列表内DataFrame追加指定DataFrame失败,求问题原因及解决方法

问题原因
  1. append方法不修改原对象:x.append(df_forecast)会返回一个新的DataFrame,而非在原DataFrame上直接修改。你将新对象赋值给循环变量x,但这不会改变df_list里的原始元素,也不会更新df_apples、df_oranges这些初始变量。
  2. 循环变量的作用域限制:在for x in df_list循环中,x只是列表元素的临时引用,重新赋值x不会影响列表内的原始DataFrame对象。
修复方案

方案1:通过索引遍历更新列表元素

直接操作列表索引,将合并后的新DataFrame重新存入对应位置:

import pandas as pd
import numpy as np

# 历史数据定义
df_apples = pd.DataFrame({'sales': [400, 450, 500, 545, 550], 
     'price': [3.00, 2.75, 3.44, 4.00, 5.32], 
     'date' : ['2022-10-31','2022-11-30','2022-12-31','2023-01-31','2023-02-28']})

df_oranges = pd.DataFrame({'sales': [50, 65, 60, 80, 110], 
     'price': [0.50, 0.45, 0.30, 0.35, 0.40], 
     'date' : ['2022-10-31','2022-11-30','2022-12-31','2023-01-31','2023-02-28']})

df_grapes = pd.DataFrame({'sales': [300, 350, 360, 380, 510], 
     'price': [1.05, 1.10, 1.35, 1.55, 0.95], 
     'date' : ['2022-10-31','2022-11-30','2022-12-31','2023-01-31','2023-02-28']})

df_list=[df_apples,df_oranges,df_grapes]

# 预测数据定义
index = pd.date_range('2023-03-31', periods=6, freq='M')
columns = ['sales','price']
df_forecast = pd.DataFrame(index=index, columns=columns)

# 修改后的合并逻辑
for i in range(len(df_list)):
    # 复制原DataFrame避免修改原始数据
    temp_df = df_list[i].copy()
    temp_df.set_index(pd.to_datetime(temp_df['date']), inplace=True)
    temp_df.drop('date', axis=1, inplace=True)
    # 用pd.concat替代已弃用的append方法
    merged_df = pd.concat([temp_df, df_forecast])
    # 更新列表中的元素
    df_list[i] = merged_df

# 验证合并结果
print(df_list[0])

方案2:直接生成新的合并列表

如果不需要保留原始DataFrame,可直接创建包含合并后数据的新列表:

# 数据定义部分与上述一致
merged_df_list = []
for df in df_list:
    # 处理日期索引并删除原date列
    processed_df = df.set_index(pd.to_datetime(df['date'])).drop('date', axis=1)
    # 合并历史与预测数据
    merged_df = pd.concat([processed_df, df_forecast])
    merged_df_list.append(merged_df)

# merged_df_list即为所有合并后的DataFrame集合

额外提示

pandas 2.0及以上版本中,DataFrame.append()方法已被弃用,官方推荐使用pd.concat()完成DataFrame合并操作,这也是修复方案中选用concat的原因。

内容的提问来源于stack exchange,提问作者jack homareau

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:31:00