首页 > 解决方案 > 在 df 列中匹配名称,然后添加一个数字以将它们配对

问题描述

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

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

我正在尝试在Pairing列中获取结果,因此只要在Name&中匹配type它们就会得到相同的数值。

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

是否还可以从 1 而不是 0 开始分解索引?

标签: pythonpandasdataframe

解决方案


这是factorize

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

推荐阅读