我有一个数据框 df1,第一列的列名称为 Acc Number,数据如下所示:
Acc Number
ASC100.1
MJT122
ASC120.4
XTY111
我需要制作一个新的数据框 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+)
假设数字最多只能有一个点。
进一步
关于Python pandas 在数据框中拆分文本和数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53290902/