分割数据不一致的pandas数据框列

时间:2018-09-07 14:09:00

标签: python regex pandas

我有一个列“后缀”,我想将其分为列“后缀”和“字母” 但是数据有点脏:

'suffix'
 7
 D-25
 K110
 NO7
 NO-8

我想要的结果:

'suffix'   'character'
     7        Nan
     25       D
     110      K
     7        NO
     8        NO

使用Pandas Series.str.split很难做到吗? 我已经研究过正则表达式,但是我对这些正则表达式没有经验,也找不到可以使用的示例。

2 个答案:

答案 0 :(得分:4)

您可以通过向熊猫传递一个正则表达式来做到这一点:

>>> import re
>>> import pandas as pd
>>> regex = re.compile(r'(?P<char>[A-Z]*)-*(?P<suf>\d+)')

>>> s = pd.Series(['7', 'D-25', 'K110', 'NO7', 'NO8'])

>>> s.str.extract(regex).replace('', 'NaN')
  char  suf
0  NaN    7
1    D   25
2    K  110
3   NO    7
4   NO    8

答案 1 :(得分:2)

在@Brad Solomon回答之前,我开始写这篇文章。他虽然矮一些,但是这种方法显示了Pandas中的一些内置正则表达式处理。

settings

这为您提供了一个这样的DataFrame:

public IActionResult Credit([FromBody] Data data)
{
   var x = Report();
   return Ok(new {Active = x.Item1, UserName = x.Item2});
}