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

pandas.Series.apply返回None却成功修改原Series的问题咨询

问题原因
  • 集合的add()方法是原地修改集合本身,执行后返回值固定为None。apply()会把lambda的返回值组装成新的Series,所以最终得到的结果全是None。
  • pandas Series里的集合属于可变对象,lambda里直接调用set_.add(2)会直接修改原Series中存储的集合引用,所以原Series的元素确实会被成功修改。
正确处理方式

分两种使用场景:

场景1:仅需修改原Series,不需要生成新Series

直接遍历Series元素修改即可,没必要用apply(),写法更直观:

for s in epitope_charge_detail:
    s.add(2)

场景2:保留原Series,生成包含修改后集合的新Series

必须先复制原集合,再添加元素,避免改动原数据:

# 简洁写法
new_epitope_charge = epitope_charge_detail.apply(lambda s: (lambda x: x.add(2) or x)(set(s)))

# 更易读的函数写法
def add_element(s):
    new_set = set(s)
    new_set.add(2)
    return new_set

new_epitope_charge = epitope_charge_detail.apply(add_element)

这里用set(s)复制原集合,修改新集合后返回,原Series的元素不会被改动,新Series里是更新后的集合。

内容的提问来源于stack exchange,提问作者FluidMechanics Potential Flows

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:10:59