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

如何无需循环对Pandas列所有行提取前3位数字?

如何无需循环从Pandas列中提取前3位数字?

你已经搞定了单个元素的处理逻辑,要把这个操作批量应用到整列,完全不用写循环——Pandas的矢量化字符串操作就是专门干这个的,既简洁又高效,比手动循环快太多!

直接用下面的代码就能实现需求:

# 先把列转为字符串类型,提取前3位,再转回整数
df['myCol_new'] = df['myCol'].astype(str).str[:3].astype(int)

代码细节解释:

  1. .astype(str):把整列的数值统一转换成字符串类型,这样才能对每个元素执行切片操作;
  2. .str[:3]:借助Pandas的str属性,对整列的字符串做矢量化切片,一次性提取所有元素的前3个字符;
  3. .astype(int):把提取后的字符串转回整数类型,得到你需要的前3位数字结果。

如果你的列里全是整数,也可以用数学方法实现(不过字符串方法更通用,比如能兼容位数不足3位的数字):

# 仅适用于整数列,通过整除运算获取前3位
df['myCol_new'] = df['myCol'] // 10 ** (df['myCol'].astype(str).str.len() - 3)

注意:这个数学方法对位数小于3的数字会返回0(比如数字12会得到0),而字符串方法会保留原数字(数字12会得到12),可以根据你的实际需求选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:57:35