仅在前导数字处拆分列

时间:2019-02-19 11:49:56

标签: python regex pandas

我能够弄清楚如何用数字和字母拆分我的专栏,并且找到了拆分数字和字母的解决方案。但是我有一个问题,就是丢失所有跟在前导数字/数字之后的数字,并且找不到解决方案(并且还在学习如何使用正则表达式)。

简单示例:

import pandas as pd
import numpy as np

data = np.array([['Col1','Col2'],
                ['1','05MW'],
                ['2','16MW'],
                ['3','05SW1'],
                ['4','05SW2']])

df = pd.DataFrame(data=data[1:,:],
                  index=data[1:,0],
                  columns=data[0,:])

df[['Col2', 'id']] = df['Col2'].str.extract('(\d+)([A-Za-z]*)', expand=True)

礼物:

print (df)
  Col1 Col2  id
1    1   05  MW
2    2   16  MW
3    3   05  SW
4    4   05  SW

但是,我不想丢失任何数字,包括前导数字之后的数字。我正在尝试实现以下输出:

print (df)
  Col1 Col2  id
1    1   05  MW
2    2   16  MW
3    3   05  SW1
4    4   05  SW2

1 个答案:

答案 0 :(得分:2)

添加0-9来解析数字:

df[['Col2', 'id']] = df['Col2'].str.extract('(\d+)([A-Za-z0-9]*)', expand=True)

或使用.*解析所有值:

df[['Col2', 'id']] = df['Col2'].str.extract('(\d+)(.*)', expand=True)

print (df)
  Col1 Col2   id
1    1   05   MW
2    2   16   MW
3    3   05  SW1
4    4   05  SW2