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

如何使用dataframe在python中生成唯一的服务id号,python,pandas,dataframe,Python,Pandas,Dataframe,大家好,我有一个有两个克隆的数据,所以我想为它生成唯一的id序列。。。 这是数据: Year Month 0 2010 Jan 1 2010 Feb 2 2010 Mar 3 2010 Mar 4 2010 Mar data['Sr_ID'] = data.groupby(['Month','Year']).ngroup() data.head() Year Month S

大家好,我有一个有两个克隆的数据,所以我想为它生成唯一的id序列。。。 这是数据:

    Year    Month   
0   2010    Jan     
1   2010    Feb     
2   2010    Mar     
3   2010    Mar     
4   2010    Mar
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 
    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加入这两列,因为我已经编写了一个代码:

    Year    Month   
0   2010    Jan     
1   2010    Feb     
2   2010    Mar     
3   2010    Mar     
4   2010    Mar
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 
    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
这将给出此输出:

    Year    Month   
0   2010    Jan     
1   2010    Feb     
2   2010    Mar     
3   2010    Mar     
4   2010    Mar
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 
    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
但我不想要这样的“Sr_ID”,我想要像“Sr_0001…Sr_0002” 它应该在这个“Sr”的数字序列中,所以对于这个 我想要这样的输出:

    Year    Month   
0   2010    Jan     
1   2010    Feb     
2   2010    Mar     
3   2010    Mar     
4   2010    Mar
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 
    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列,没有重复的行。

+ 您可以使用范围,然后在左侧填充零:

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

为什么您想要的输出中的2010年Mar映射到3个不同的Sr_ID号?@jpp先生,我想为不同的行生成不同的ID,因为我有8列,而不是这一列,这与我方生成ID号的方式不同