根据pandas中其他列的值添加具有唯一标识符的列

时间:2015-09-05 18:34:11

标签: python pandas

我有这个人。数据帧:

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))

1 个答案:

答案 0 :(得分:3)

您可以将groupbycumcount

一起使用
>>> 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。

相关问题