如何处理Pandas字符串序列:截取小数后保留8位字符串其余置空
Pandas 字符串序列处理:保留指定长度字符串,其余返回空值
问题背景
现有Pandas字符串序列:
import pandas as pd s = pd.Series(["12345678.0","45678912.0", "0", "2983129416.0", "62441626.0"])
已通过以下代码截取小数点前的部分:
result = s.str.split(".", 1, expand=True)[0]
需求:保留截取后长度为8的字符串,其余位置返回空字符串"",需保留原序列的行数与顺序,不能仅筛选符合条件的行,预期结果为:
pd.Series(["12345678","45678912", "", "", "62441626"])
实现方法
方法1:使用numpy.where条件判断
通过str.len()获取每个字符串的长度,结合numpy.where做条件替换:
import numpy as np final_result = pd.Series(np.where(result.str.len() == 8, result, ""))
方法2:使用Pandas原生mask方法
mask方法会将满足条件的元素替换为指定值,这里把长度不等于8的元素替换为空字符串:
final_result = result.mask(result.str.len() != 8, "")
结果验证
两种方法均会生成符合预期的序列,保留原行数与顺序,仅将长度非8的元素替换为空字符串,不会过滤行。
内容的提问来源于stack exchange,提问作者Eve
相关产品推荐
相关产品推荐

