我有这个人。数据帧:
Cnt Year JD Min_Temp
S 2000 1 277.139
S 2000 2 274.725
S 2001 1 270.945
S 2001 2 271.505
N 2000 1 257.709
N 2000 2 254.533
N 2000 3 258.472
N 2001 1 255.763
N 2001 2 265.714
N 2001 3 267.943
我想添加一个新列,其中给定'Cnt'的每个单独行都被赋予唯一标识符(1,2,3 ...)。所以,结果应如下所示:
Cnt Year JD Min_Temp unq
S 2000 1 277.139 1
S 2000 2 274.725 2
S 2001 1 270.945 3
S 2001 2 271.505 4
N 2000 1 257.709 1
N 2000 2 254.533 2
N 2000 3 258.472 3
N 2001 1 255.763 4
N 2001 2 265.714 5
N 2001 3 267.943 6
这里,每一行对应于“Cnt”列中相同的值作为唯一标识符。
目前,我所能做的就是添加一个增加值的新列: df ['unq'] = numpy.arange(1,len(df))
答案 0 :(得分:3)
您可以将groupby
与cumcount
>>> df["unq"] = df.groupby("Cnt").cumcount() + 1
>>> df
Cnt Year JD Min_Temp unq
0 S 2000 1 277.139 1
1 S 2000 2 274.725 2
2 S 2001 1 270.945 3
3 S 2001 2 271.505 4
4 N 2000 1 257.709 1
5 N 2000 2 254.533 2
6 N 2000 3 258.472 3
7 N 2001 1 255.763 4
8 N 2001 2 265.714 5
9 N 2001 3 267.943 6
请注意,由于这些组基于Cnt列值而不是连续性,如果您在N组之下有第二组S,则中的第一个unq
值小组将是5。