我有一个数据框 df1,其列名称 Acc Number 作为第一列,数据如下所示:
Acc Number
ASC100.1
MJT122
ASC120.4
XTY111
我需要创建一个新的数据框 df2 ,它有两列,第一列包含文本部分,第二列包含数字,因此所需的输出是:
Text Number
ASC 100.1
MJT 122
ASC 100.4
XTY 111
我该怎么做呢?
Thanks!
你可以这样做:
import pandas as pd
data = ['ASC100.1',
'MJT122',
'ASC120.4',
'XTY111']
df = pd.DataFrame(data=data, columns=['col'])
result = df.col.str.extract('([a-zA-Z]+)([^a-zA-Z]+)', expand=True)
result.columns = ['Text', 'Number']
print(result)
Output
Text Number
0 ASC 100.1
1 MJT 122
2 ASC 120.4
3 XTY 111
图案([a-zA-Z]+)([^a-zA-Z]+)
表示匹配一组字母:([a-zA-Z]+)
后面跟着一组非字母:([^a-zA-Z]+)
。更安全的替代方法是使用以下正则表达式:([a-zA-Z]+)(\d+\.?\d+)
假设数字最多只能有一个点。
Further
- 有关的文档regex在Python中。
- 有关的文档extract.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)