具有重复值的Python pandas数据框

时间:2018-06-19 14:27:38

标签: python pandas dataframe

我希望用以下样本值索引以下熊猫数据框。数据框有很多重复项。

ID      AccountName
83      CHRISTIAN UNIVERSITY
83      CHRISTIAN UNIVERSITY
83      CHRISTIAN UNIVERSITY
83      CHRISTIAN UNIVERSITY
104     UNIVERSITY
104     UNIVERSITY
1740    ELECTRIC CORPORATIO
1740    ELECTRIC CORPORATIO
1740    ELECTRIC CORPORATIO
1740    ELECTRIC CORPORATIO
...

结果数据框应为以下内容。

  ID        index   AccountName
  83            1   CHRISTIAN UNIVERSITY
  83            1   CHRISTIAN UNIVERSITY
  83            1   CHRISTIAN UNIVERSITY
  83            1   CHRISTIAN UNIVERSITY
 104            2   UNIVERSITY
 104            2   UNIVERSITY
1740            3   ELECTRIC CORPORATIO
1740            3   ELECTRIC CORPORATIO
1740            3   ELECTRIC CORPORATIO
1740            3   ELECTRIC CORPORATIO
...

有人能快速有效地做到这一点吗?

1 个答案:

答案 0 :(得分:4)

假设您要为每个新ID增加索引,我会这样做:

In [43]: df["number"] = df.ID.rank(method='dense').astype(int)

In [44]: df
Out[44]: 
     ID           AccountName  number
0    83  CHRISTIAN UNIVERSITY       1
1    83  CHRISTIAN UNIVERSITY       1
2    83  CHRISTIAN UNIVERSITY       1
3    83  CHRISTIAN UNIVERSITY       1
4   104            UNIVERSITY       2
5   104            UNIVERSITY       2
6  1740   ELECTRIC CORPORATIO       3
7  1740   ELECTRIC CORPORATIO       3
8  1740   ELECTRIC CORPORATIO       3
9  1740   ELECTRIC CORPORATIO       3

给出最低ID的数字1,第二最低ID 2,等等,与它们在帧中实际出现的顺序无关(例如,如果您将ELECTRIC_CORPORATIO放在第二位,它仍将获得#3,因为1740是第三个数字。)

还有其他方法可以确保群集是连续的,例如

(~df["ID"].duplicated()).cumsum()

但是,这通常比将唯一ID映射到唯一号码恕我直言要可靠得多。

此外,我在这里使用“数字”作为列名而不是“索引”,因为这会导致框架的索引和名为“索引”的列之间的混淆。