如何按指定条件拆分pandas Series并提取对应区间的文本
Pandas Series指定区间文本提取方案
错误原因
你原来连续调用str.split的写法不合法:第一次按/拆分后得到的是元素为列表的Series,不能直接对整个列表再次调用str.split,必须先取出/后的片段,再做二次处理。
最优解法(正则提取,逻辑简单不易错)
直接用str.extract匹配目标区间的内容,代码如下:
import pandas as pd # 正则含义:匹配/后到(或数字出现前的所有内容,自动忽略前后空格 result = data['source'].str.extract(r'/\s*([^\d(]+?)\s*', expand=False)
拆分法实现(如果你想用拆分逻辑完成)
# 第一步按/拆分取后半段,第二步按(或数字拆分取前半段,最后去掉首尾空格 result = data['source'].str.split('/').str[1]\ .str.split(r'\(|\d', n=1).str[0]\ .str.strip()
输出结果
运行上述代码后得到的结果和你预期一致:
0 Bundaberg 1 Doncaster 2 Angle Park 3 Nottingham 4 Cannington 5 Manawatu 6 Albion Park Name: source, dtype: object
内容的提问来源于stack exchange,提问作者chuky pedro
相关产品推荐
相关产品推荐

