Python 熊猫:如何创建一个新列,并根据另一列的条目以编程方式设置条目?

Python 熊猫:如何创建一个新列,并根据另一列的条目以编程方式设置条目?,python,pandas,Python,Pandas,如果我有如下数据帧: box boxCode count 0 x305 K8 3 1 x305 Z8 4 2 x307 Z8 1 3 x403 Z8 6 4 x405 Z8 1 5 x510 Z8 2 如何生成如下所示的新数据帧: box boxCode count boxVariant 0 x305 K8 3

如果我有如下数据帧:

    box boxCode  count
0  x305      K8      3
1  x305      Z8      4
2  x307      Z8      1
3  x403      Z8      6
4  x405      Z8      1
5  x510      Z8      2
如何生成如下所示的新数据帧:

    box boxCode  count   boxVariant
0  x305      K8      3    x305-1
1  x305      Z8      4    x305-2
2  x307      Z8      1    x307-1
3  x403      Z8      6    x403-1
4  x405      Z8      1    x405-1
5  x510      Z8      2    x510-1
如果上面的boxVariant列中的条目与box列中的条目基本相同,只是它们现在已编号?

您可以在box上使用groupby,然后使用cumcount操作。将结果与原始框列连接


从R的角度来看,它可能是这样的:librarydplyr,数据帧%group\U bybox%>%mutaterows=row\U number%>%ungroup%>%uniteboxVariant,box,rows,sep=-,remove=FALSE。只需将代码迁移到Python,一切都很好。
In [6]: df.box +'-' + (df.groupby('box').cumcount() + 1).astype(str)
Out[6]:
0    x305-1
1    x305-2
2    x307-1
3    x403-1
4    x405-1
5    x510-1
dtype: object