Python 3.x 将数字上的列拆分为%
我有一个df,其中一列显示如下:Python 3.x 将数字上的列拆分为%,python-3.x,regex,Python 3.x,Regex,我有一个df,其中一列显示如下: **Share** We are safe 25% We are always safe 12.50% (India Aus, West) We are ok (USA, EU) We are not OK What is this Always wise 25.66% 我希望拆分此列,以便在适用的情况下将%值从该列拆分为一个新列。 因此,输出将是 Share Percent LOCATION We are safe
**Share**
We are safe 25%
We are always safe 12.50% (India Aus, West)
We are ok (USA, EU)
We are not OK
What is this
Always wise 25.66%
我希望拆分此列,以便在适用的情况下将%值从该列拆分为一个新列。
因此,输出将是
Share Percent LOCATION
We are safe 25%
We are always safe 12.50% India Aus, West
We are ok USA, EU
We are not OK
What is this
Always wise 25.66%
我原以为下面会把它从右边分开,但它不起作用
df['Percent'] = df['Share'].str.rsplit(r' \d',1).str[0]
您可以提取这些值:
df[['Share','Percent']] = df['Share'].str.split(r'\s+(?=\d+(?:\.\d+)?%\s*$)',expand=True).fillna("")
熊猫测试:
将熊猫作为pd导入
df=pd.DataFrame({'Share':['wesafe25%,'wearok','wealwaysafe12.50%]})
df['Share','Percent']=df['Share'].str.split(r'\s+(?=\d+(?:\.\d+)?%\s*$),expand=True)
>>>df
份额百分比
0我们是安全的25%
我们很好
2我们总是安全的12.50%
看。详情:
-一个或多个空格\s+
-与紧跟其后的位置相匹配的正向前瞻:(?=\d+(?:\。\d+?%\s*$)
-一个或多个数字\d+
-可选的(?:\。\d+)
和一个或多个数字序列
-一个%
符号%
-0或更多尾随空格和\s*
-字符串结束$
拆分时,您将得到3列,因此这是不好的。尝试我编辑答案的另一个解决方案。我对问题做了一个轻微的更改。基本上,现在尝试拆分和/或看到百分比或左括号