Pandas:根据另一列中的字符串值分配分类列

Pandas: assign categorical column based on string values in another column

假设我有这样一个数据框:

     A         B
1    05010001  17
2    05020001  5
3    05020002  11
4    05020003  2
5    05030001  86
6    07030001  84
7    07030002  10
8    08010001  16

我想添加第三列 C,它将 1 分配给所有 A 值以 05 开头的行,2 到所有以 07 开头的值等等。

结果将是:

     A         B    C
1    05010001  17   1
2    05020001  5    1
3    05020002  11   1
4    05020003  2    1
5    05030001  86   1
6    07030001  84   2
7    07030002  10   2
8    08010001  16   3

最有效的方法是什么?我的实际数据框有 3,000,000 行。

编辑

我的实际数据框中的列 A 称为 First (C),带有 space。我不允许更改它。我是否必须对列的 header 进行某种操作?

firstTwo = df.sort_values('A').A.str[:2]            # sort the data frame by column A and 
                                                    # take the first two digits of column A
df['C'] = (firstTwo != firstTwo.shift()).cumsum()   # create ids based on the first two 
                                                    # digits with cumsum
df