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

为何pandas.DataFrame.apply返回相同行?代码问题解析

问题原因分析

核心问题出在你写的lambda s: [s]里——这里的s是Pandas迭代行时复用的同一个Series对象。

当用df.apply(..., axis=1)逐行处理数据时,Pandas不会为每一行单独创建新的Series实例,而是反复用同一个Series,每次迭代只更新它内部的值。你返回的[s]是包含这个复用对象的列表,所以所有行的列表最终都指向了最后一次迭代更新后的Series,也就是最后一行的3和z,自然输出全是相同内容。

正确写法示例

如果要正确返回每行对应的内容,可以把Series转成列表,或者复制一个新的Series:

# 方法1:将Series转为普通列表
df.apply(lambda s: list(s), axis=1)

# 方法2:复制Series后再放入列表
df.apply(lambda s: [s.copy()], axis=1)

运行后会得到正确的输出:

0    [1, x]
1    [2, y]
2    [3, z]
dtype: object

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 07:17:33