使用正则表达式的 pandas 系列上的 rsplit 不起作用。我想根据分隔符拆分系列而不删除分隔符。
df2= pd.Series(['Series of Class A','Series of Class B part of Class C','Class D','Class'])
seperator='Class'
data = df2.str.split(r'.(?='+seperator+')', n = 2, expand=True)
结果是:
0 1 2
0 Series of Class A None
1 Series of Class B part of Class C
2 Class D None None
3 Class None None
我想用 rsplit 做同样的事情
我试过了
data = df2.str.rsplit(r'.(?='+seperator+')', n = 2, expand=True)
期望使用 rsplit 得到相同的结果
0 1 2
0 Series of Class A None
1 Series of Class B part of Class C
2 Class D None None
3 Class None None
最佳答案
不幸的是,pd.Series.str.rsplit
不能像记录的那样工作(v0.25,stable/v1+)。该项目的 GitHub 问题跟踪器有一个 open bug从 2019 年 11 月开始报告 rsplit
不适用于正则表达式模式(v 0.24.2 和 0.25.2)。在内部,该方法正在调用 str.rsplit
不支持正则表达式。
幸运的是,记者 jamespreed 添加了一个(本土)替代品 function :
def str_rsplit(arr, pat=None, n=None): if pat is None or len(pat) == 1: if n is None or n == 0: n = -1 f = lambda x: x.rsplit(pat, n) else: if n is None or n == -1: n = 0 regex = re.compile(pat) def f(x): s = regex.split(x) a, b = s[:-n], s[-n:] if not a: return b ix = 0 for a_ in a: ix = x.find(a_, ix) + len(a_) x_ = [x[:ix]] return x_ + b return f res = _na_map(f, arr) return res
关于python-3.x - 带有正则表达式的 Pandas 系列上的 rsplit 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58455173/