首页 > 解决方案 > Pandas str.rsplit 不适用于逻辑或模式

问题描述

我试图在 Pandas 中对一个字符串进行 rsplit,得到了一个奇怪的结果:split 运行良好,但 rsplit 不是。原因似乎是 OR "|" 的存在,但我真的很难理解为什么会这样。例子:

stri = """Mywebsite.com/optiona/optionb/type/102/103/107?data=1.2. 1581202800. 1581289200.30"""
stri_1 = """optiona/optionb/type/102/103/107?data=1.2. 1581202800. 1581289200.30"""

df = pd.DataFrame({'input': [stri, stri_1]})
df_split1 = df['input'].str.split(r'\?data=', expand=True)
print(df_split1.loc[:, 0].str.rsplit(r'/|y', expand=True))
# |    | 0                                              |
# |---:|:-----------------------------------------------|
# |  0 | Mywebsite.com/optiona/optionb/type/102/103/107 |
# |  1 | optiona/optionb/type/102/103/107               |

print(df_split1.loc[:, 0].str.split(r'/|y', expand=True))
# |    | 0       | 1           | 2       | 3       | 4   | 5   |   6 |   7 |   8 |
# |---:|:--------|:------------|:--------|:--------|:----|:----|----:|----:|----:|
# |  0 | M       | website.com | optiona | optionb | t   | pe  | 102 | 103 | 107 |
# |  1 | optiona | optionb     | t       | pe      | 102 | 103 | 107 |     |     |

我想这是由于正则表达式的一些固有的左不对称性,但我没有找到任何好的解释。先感谢您!

标签: pythonregexpandas

解决方案


推荐阅读