Python代码在数据框架中列的值中包含批编号



我有一个像这样的数据框架

Name  Age
0    U   20
1    U   20
2    U   20
3    U   18
4    I   45
5    I   68
6    I    8
7    D    7
8    D    6
9    I   89

,我想有批大小(比如3),我想显示另一列,从1开始增加批号,批大小在特定列值U, I, D中重复,在批大小之后,批号应该增加1(在特定的名称中)输出应该看起来像

Name  Age  Batch
0    U   20   1
1    U   20   1
2    U   20   1
3    U   18   2
4    I   45   3
5    I   68   3
6    I    8   3
7    D    7   4
8    D    6   4
9    I   89   5

有什么建议或参考吗?

我有这段代码,它完成了工作,但它不考虑Name列,然后递增。

resu['B'] = np.divmod(np.arange(len(resu)),3)[0]+1

我得到的输出是这样的,这不是想要的输出,因为它没有考虑名称列

index Name  Age  B
0      4    I   45  1
1      5    I   68  1
2      6    I    8  1
3      9    I   89  2
4      0    U   20  2
5      1    U   20  2
6      2    U   20  3
7      3    U   18  3
8      7    D    7  3
9      8    D    6  4

有没有其他的解决办法?

您可以使用:

N = 3
# group successive values
group = df['Name'].ne(df['Name'].shift()).cumsum()
# restart group every N times
df['Batch'] = (df.groupby(group)
.cumcount().mod(N)
.eq(0).cumsum()
)

输出:

Name  Age  Batch
0    U   20      1
1    U   20      1
2    U   20      1
3    U   18      2
4    I   45      3
5    I   68      3
6    I    8      3
7    D    7      4
8    D    6      4
9    I   89      5

最新更新