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

如何优雅筛选DataFrame中B列以对应A列值开头的行,替代apply方法

Pandas筛选B列以对应A列值开头的行的实现方案

你之前使用的apply方案本质是pandas层的逐行迭代,额外开销很高,下面两种方案性能更优、写法更简洁:

方案1:列表推导式(绝大多数场景首选)

列表推导是纯Python层的轻量循环,开销远低于apply,写法也最简洁:

# 生成筛选掩码
mask = [b.startswith(a) for a, b in zip(df['A'], df['B'])]
# 筛选符合条件的行
filtered_df = df[mask]

方案2:numpy向量化(适合百万行以上超大数据集)

数据量极大的场景下可以用numpy向量化操作进一步提升效率:

import numpy as np

# 封装字符串匹配逻辑为向量化函数
vec_match = np.vectorize(lambda prefix, full_str: full_str.startswith(prefix))
mask = vec_match(df['A'], df['B'])
filtered_df = df[mask]

用你提供的示例数据运行上述代码,最终得到的结果就是序号为0、3的两行,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:06:04