说我有一个像这样的数据框:
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
开头的所有行,依此类推。结果将是:
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行。
编辑
我实际数据框中的列
07
称为A
,带有空格。我不允许更改它。我是否必须对列标题进行某种操作? 最佳答案
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