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

基于pandas DataFrame列条件删除指定行列表列的末尾元素

错误原因

你两次尝试的代码都存在两个问题:

  1. 用到了df.loc[筛选条件]['Images']这类链式索引写法,pandas在该场景下会返回原始数据的副本而非视图,对副本做的所有修改都不会同步到原DataFrame
  2. 第二个写法中Series.pop()是对整个Series对象弹出最后一行元素,不是对每行存储的列表做弹出操作,完全不符合你的需求

正确实现方案

方法1:apply自定义处理(兼容性最好)

直接通过loc同时指定目标行和列,对每行的列表做切片去掉最后一个元素:

df.loc[df['Type'] == 'A', 'Images'] = df.loc[df['Type'] == 'A', 'Images'].apply(lambda x: x[:-1])

方法2:pandas列表访问器(写法更简洁)

如果你的pandas版本支持列表元素的str访问器,可以直接用更短的写法:

df.loc[df['Type'] == 'A', 'Images'] = df.loc[df['Type'] == 'A', 'Images'].str[:-1]

两种方法运行后,所有Type为A的行Images列都会去掉最后一个元素image3,其余行保持原样,完全符合预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:30:01