如何使用dataframe在python中生成唯一的服务id号



大家好,我有一个数据有两个区块,所以想为它生成唯一的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

最新更新