我有一个数据框df1,第一列的名称为Acc Number,数据如下:
Acc Number
ASC100.1
MJT122
ASC120.4
XTY111
我需要创建一个新的数据框df2,该数据框将具有两列,第一列具有文本部分,第二列具有数字,因此所需的输出为:
Text Number
ASC 100.1
MJT 122
ASC 100.4
XTY 111
我该怎么做?
谢谢!
答案 0 :(得分:1)
您可以执行以下操作:
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)
输出
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+)
假定数字最多只能有一个点。
进一步