Python 在df列中匹配名称,然后添加一个数字以将其配对

Python 在df列中匹配名称,然后添加一个数字以将其配对,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个有两列的df。目标是从名称列中读取,并在配对列中添加一个数字,但如果有多个相同的名称,则它们将获得相同的数字。例如: Name | Pairing ----------- Charles |1 Scott |2 Scott |2 Anne |3 Anne |3 Anne |3 Bart |4 我试过使用str.replace,但我相信我只能使用关键词。任何关于如何解决这一问题的建议都将不胜感激。谢谢大家! 编辑: 所以

我有一个有两列的df。目标是从
名称
列中读取,并在
配对
列中添加一个数字,但如果有多个相同的名称,则它们将获得相同的数字。例如:

Name    | Pairing  
-----------
Charles |1   
Scott   |2   
Scott   |2   
Anne    |3   
Anne    |3
Anne    |3
Bart    |4

我试过使用
str.replace
,但我相信我只能使用关键词。任何关于如何解决这一问题的建议都将不胜感激。谢谢大家!

编辑:

所以我做了一些调整,现在我尝试在混合中添加第三列:

Name    | type  |      Pairing 
---------------------------
Charles |Circle      | 1
Scott   |Square      | 2
Scott   |Triangle    | 3
Anne    |Rectangle   | 4
Anne    |Rectangle   | 4
Anne    |Oval        | 5
Bart    |Octagon     | 6
我试图在
配对
列中获得结果,因此只要
名称
类型
中的匹配项得到相同的数值

我已经尝试了这个
df['Pairing']=pd.factorize(df['Name'].str[:6])[0]+pd.factorize(df['type'].str[:6])[0]
这是一种可行的方法,但并没有给我准确的结果


是否也可以在1而不是0开始factorize索引?

这是
factorize

df['Pairing'] = pd.factorize(df['Name'])[0]

谢谢你!如果我想匹配name列中字符串的前几个字符,这个方法可以工作吗?假设我有
Scott
Scott2
我希望它们有相同的数字,您需要提取这几个字符。例如,
df['Name'].str[:5]
将为您提供前五个字符,
df['Name'].str.extract('^([\D]+)[0]')
将提取第一个非数字字符。再次感谢,我还有一些事情要做,但这是一个很好的起点!