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

Python Pandas中更新与编辑阵容列表问题求助

问题原因

你遇到的核心问题是列表的引用传递特性:Python中列表是可变对象,直接通过=赋值时,新变量只是指向原列表的内存地址,并非创建新列表。后续对当前行列表的修改会同步影响所有引用该列表的行,最终所有单元格都显示最后一次修改后的阵容。

解决方法

每次赋值时创建列表的副本,切断引用关联。可以用列表的copy()方法,或者切片[:]实现复制。

修改后的代码
for i in range(1, len(subs)):
    # 关键:创建上一行阵容的副本,而非直接引用
    subs['vlineup'].iloc[i] = subs['vlineup'].iloc[i-1].copy()
    subs['hlineup'].iloc[i] = subs['hlineup'].iloc[i-1].copy()

    if subs['team'].iloc[i] == home:      
        if subs['type'].iloc[i] == 'OUT':
            subs['hlineup'].iloc[i].remove(subs['checkname'].iloc[i])           
        elif subs['type'].iloc[i] == 'IN':
            subs['hlineup'].iloc[i].append(subs['checkname'].iloc[i])
            
    elif subs['team'].iloc[i] == visitor:
        if subs['type'].iloc[i] == 'OUT':
            subs['vlineup'].iloc[i].remove(subs['checkname'].iloc[i])
        elif subs['type'].iloc[i] == 'IN':
            subs['vlineup'].iloc[i].append(subs['checkname'].iloc[i])
额外提示
  • 确保初始行(i=0)的vlineup和hlineup是正确的初始阵容列表
  • 如果处理大型数据集,iloc循环效率较低,可考虑用pandas的cumsum或自定义函数结合shift()优化,但当前场景下副本方式已能解决问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:15:42