大家好,我有一个数据有两个区块,所以想为它生成唯一的id序列。。。这是数据:
Year Month
0 2010 Jan
1 2010 Feb
2 2010 Mar
3 2010 Mar
4 2010 Mar
我想将该服务id加入这两列,为此我编写了一个代码:
data['Sr_ID'] = data.groupby(['Month','Year']).ngroup()
data.head()
这会产生以下输出:
Year Month Sr_ID
0 2010 Jan 20
1 2010 Feb 15
2 2010 Mar 35
3 2010 Mar 35
4 2010 Mar 35
但我不希望"Sr_ID"像这样,我希望它像"Sr_0001…Sr_0002">它应该是这个"Sr"的数字序列,所以对于这个我想要这样的输出:
Year Month Sr_ID
0 2010 Jan Sr_0001
1 2010 Feb Sr_0002
2 2010 Mar Sr_0003
3 2010 Mar Sr_0004
4 2010 Mar Sr_0005
我想为不同的行生成不同的id,因为我有8列,没有重复的行。
np.arange
+str.zfill
你可以使用一个范围,然后在左边加零:
df['Sr_ID'] = 'Sr_' + pd.Series(np.arange(1, len(df.index)+1)).astype(str).str.zfill(4)
print(df)
Year Month Sr_ID
0 2010 Jan Sr_0001
1 2010 Feb Sr_0002
2 2010 Mar Sr_0003
3 2010 Mar Sr_0004
4 2010 Mar Sr_0005