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

PySpark SQL提取指定DataFrame行:用Lambda循环还是内置方法?

提取指定行的Pandas高效解决方案

嘿,完全不用在Lambda里写循环!Pandas本身就有非常顺手的内置方法来搞定这个需求,效率还比循环高得多,给你两种最实用的方案:

1. 按固定行位置提取(适合已知行号的场景)

注意Pandas默认用0-based索引(也就是第一行对应索引0),如果你说的第1、2、4、6、8、9行是日常说的1-based行号,转成0-based就是0,1,3,5,7,8,直接用iloc方法提取就行:

# 提取目标行
selected_rows = df.iloc[[0, 1, 3, 5, 7, 8]]

这个方法直接定位目标行,没有多余计算,速度拉满。

2. 按内容标识筛选提取(适合业务逻辑驱动的场景)

你提到这些行是“基于STARTED - ARRIVED的行”,如果这些行有统一的状态标识(比如某列的值是STARTED或ARRIVED),用布尔索引会更灵活——就算后续行位置变化,只要标识不变就能正确提取:

# 假设状态列名为status,替换成你实际的列名即可
selected_rows = df[df['status'].isin(['STARTED', 'ARRIVED'])]

这种方式更贴合业务逻辑,维护起来也更省心。

为啥不推荐Lambda循环?

Pandas的内置方法都是向量化操作,底层用C实现,比Python层面的循环(包括Lambda里的循环)效率高几个量级,数据量越大差距越明显,能不用循环就别用~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:56:29