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

Pandas frame.append方法已弃用,如何更新循环内的concat语法?

用concat替代append解决pandas弃用警告

修改思路

原来循环里反复调用append会触发pandas 1.4+版本的弃用警告,且这种逐次拼接的方式效率偏低。正确的做法是先把所有需要合并的DataFrame收集到列表中,最后一次性用pd.concat完成合并。

修改后代码

# 初始化外层列表,存放每个数据库处理后的结果
outer_frames = []
for db in self.db_list:
    df_decoder = can_decoder.DataFrameDecoder(db)
    
    # 初始化内层列表,存放当前数据库下不同DataLength组的解码结果
    inner_frames = []
    for length, group in df_raw.groupby("DataLength"):
        df_phys_group = df_decoder.decode_frame(group)
        inner_frames.append(df_phys_group)
    
    # 合并内层所有结果并按索引排序
    df_phys_temp = pd.concat(inner_frames).sort_index()
    outer_frames.append(df_phys_temp)

# 合并外层所有结果,得到最终数据框
df_phys = pd.concat(outer_frames)

关键改动说明

  • 替换空DataFrame初始化:用空列表替代空DataFrame来存储待合并的数据集,避免逐次拼接的性能损耗和警告
  • 内层循环:把每次解码得到的df_phys_group加入inner_frames,最后用pd.concat(inner_frames)替代循环调用append
  • 外层循环:将每个数据库处理完成并排序后的结果加入outer_frames,最后一次性合并得到最终的df_phys
  • 如果需要重置合并后的索引,可以在concat时添加ignore_index=True参数,原代码保留了索引排序逻辑,因此默认保持索引不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:01:16