Python在数据框中拆分文本和数字
我有一个dataframe df1,列名称Acc Number作为第一列,数据如下所示:Python在数据框中拆分文本和数字,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个dataframe df1,列名称Acc Number作为第一列,数据如下所示: Acc Number ASC100.1 MJT122 ASC120.4 XTY111 我需要制作一个新的dataframe df2,它将有两列,第一列有文本部分,第二列有数字,因此所需的输出是: Text Number ASC 100.1 MJT 122 ASC 100.4 XTY 111 我该怎么做呢 谢谢 您可以这样做: import pandas as pd
Acc Number
ASC100.1
MJT122
ASC120.4
XTY111
我需要制作一个新的dataframe df2,它将有两列,第一列有文本部分,第二列有数字,因此所需的输出是:
Text Number
ASC 100.1
MJT 122
ASC 100.4
XTY 111
我该怎么做呢
谢谢 您可以这样做:
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+
,假设数字最多只能有一个点
进一步
谢谢Daniel,str.extract起作用了,为什么正则表达式会是一个更安全的选择呢?因为它将只匹配并且只匹配其中可能有一个点的数字。