Python 在df列中匹配名称,然后添加一个数字以将其配对
我有一个有两列的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,但我相信我只能使用关键词。任何关于如何解决这一问题的建议都将不胜感激。谢谢大家! 编辑: 所以
名称
列中读取,并在配对
列中添加一个数字,但如果有多个相同的名称,则它们将获得相同的数字。例如:
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]')
将提取第一个非数字字符。再次感谢,我还有一些事情要做,但这是一个很好的起点!