Python Pandas在数据框中拆分文本和数字

时间:2018-11-13 23:14:39

标签: python pandas dataframe

我有一个数据框df1,第一列的名称为Acc Number,数据如下:

Acc Number
ASC100.1
MJT122
ASC120.4
XTY111

我需要创建一个新的数据框df2,该数据框将具有两列,第一列具有文本部分,第二列具有数字,因此所需的输出为:

Text    Number 
ASC     100.1
MJT     122
ASC     100.4
XTY     111

我该怎么做?

谢谢!

1 个答案:

答案 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+)假定数字最多只能有一个点。

进一步

  1. Python中regex上的文档。
  2. extract上的文档。