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

如何将双层for循环中的pandas append旧代码改写为pandas concat写法

替换pandas append为concat的实现方案

原有循环内反复调用append的写法性能极低,且append方法已在pandas 2.0+版本中正式弃用。最优优化方案是先收集所有待新增的行,最后一次性调用concat合并,和原有逻辑完全等价的实现代码如下:

import pandas as pd

# 初始化空列表存储所有待新增的行
new_rows = []

for y in range(start_year+1, last_year+1):
    year = y
    for i in range(len(population0.index)):
        # 加copy避免修改原population中的数据,符合原代码的预期行为
        new = population.loc[i].copy()
        new.loc['isum'] = 0
        new.loc['year'] = year
        new.loc[men] = 0
        new.loc[women] = 0
        new_rows.append(new)

# 一次性合并原有数据和所有新增行
population = pd.concat([population] + new_rows, ignore_index=True)

注意事项

  • 新增的.copy()是为了避免修改原population的源数据,如果你确认原有逻辑允许修改原数据可以删除,不影响最终合并结果
  • 该写法的运行效率远高于循环内反复append,数据量越大优势越明显

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 23:09:01