创建包含3列的新列

时间:2018-02-16 19:29:09

标签: python regex pandas

我想在包含3个不同列的数据框架中创建一个新列。我希望删除非字母后的姓氏的前5个字母,如果它只是姓氏的那么长,第一个名字的前2个字母和附加到末尾的代码。

下面的代码不起作用,但那就是我所处的地方,并且它不接近工作

df['namecode'] = df.Last.str.replace('[^a-zA-Z]', '')[:5]+df.First.str.replace('[^a-zA-Z]', '')[:2]+str(jr['code'])



Name  lastname  code   namecode

jeff White 0989 Whiteje0989

Zach Bunt 0798  Buntza0798

ken Black 5764  Blackke5764

1 个答案:

答案 0 :(得分:0)

这是一种方法。

使用pandas str.slice而不是尝试进行字符串索引。

例如:

将pandas导入为pd

df = pd.DataFrame(
    {
        'First': ['jeff', 'zach', 'ken'],
        'Last': ['White^', 'Bun/t', 'Bl?ack'],
        'code': ['0989', '0798', '5764']
    }
)
print(df['Last'].str.replace('[^a-zA-Z]', '').str.slice(0,5)
      + df['First'].str.slice(0,2) + df['code'])
#0    Whiteje0989
#1     Buntza0798
#2    Blackke5764
#dtype: object