我不太擅长正则表达式,我想在这里有所改进。我试图拆分一个字符串列,该列的值如下:
1000+10%
300-7%我在用
pattern = r'[+|-]'
df[postsplitcol] = df[col].str.split(pattern)但是,所发生的情况是+或-符号也会被移除。如何将+或-保留在正确的字符串后置拆分中?我试着在论坛上看了一些类似的问题,但没有找到一种有效的方法来解决分裂的任何一种模式,我试图在这里分裂。
发布于 2022-08-26 06:22:22
df['col'].str.split("(?=[+-])", expand = True)
0 1
0 1000 +10%
1 300 -7%发布于 2022-08-26 06:12:57
在这里使用str.extract:
df[["num", "pct"]] = df["col"].str.extract(r'^(\d+(?:\.\d+)?)([+-]\d+%)$')下面是对所使用的regex模式的解释:
^从column(打开的第一个捕获group\d+匹配一个integer(?:\.\d+)?与一个可选的十进制component)关闭第一个捕获group(打开第二个捕获group[+-]匹配+/-\d+匹配integer%匹配%)关闭第二个捕获group$列的末尾我们将两个捕获的值映射到LHS上指定的两列中。
https://stackoverflow.com/questions/73496724
复制相似问题