Python pandas如何提取列中多个相同分隔符包裹的目标字符串
问题原因
你目前使用的rsplit('|', 2)是从字符串右侧开始按分隔符|分割,最多分割2次,返回的列表最后两位是空白字符串和POC-RM0EP7-01-A,因此取-2位不符合需求。
解决方案
提供两种可直接使用的实现方式:
方案1:分割后过滤空串再取值
按|分割后过滤掉所有空字符串,取第一个有效内容即可得到目标值:df["Fetch"] = df["Test"].str.split("|").apply(lambda x: [item for item in x if item][0])如果需要提取第N个非空内容,将末尾的
[0]修改为对应下标即可(下标从0开始计数)。方案2:正则匹配(更高效)
直接用正则提取第一个连续的非|字符,无需遍历过滤:df["Fetch"] = df["Test"].str.extract(r'([^|]+)')
两种方案用你提供的示例测试,返回的Fetch列结果均为CHNBAD,符合预期。
内容的提问来源于stack exchange,提问作者Raghav
相关产品推荐
相关产品推荐

