如何递增计算熊猫数据框中的每个不同值

时间:2021-01-01 15:44:42

标签: python pandas

假设我有以下 df

  val
0  x
1  x
2  z
3  y
4  x
5  y
6  y
7  z
8  x
9  z

我想创建一个新列,以增量方式跟踪每个值的计数,就像这样

  val  new
0  x   x1
1  x   x2
2  z   z1
3  y   y1
4  x   x3
5  y   y2
6  y   y3
7  z   z2
8  x   x4
9  z   z3

我尝试使用 count(),但这只是计算总数而不是增量。 value_counts() 做同样的事情,但只是按值拆分,而不是增量。有没有简单的方法来实现这一目标?谢谢!

1 个答案:

答案 0 :(得分:6)

假设 df 是您的输入数据框:

df["new"] = df["val"] + df.groupby("val")["val"].cumcount().add(1).astype(str)

输出:

  val new
0   x  x1
1   x  x2
2   z  z1
3   y  y1
4   x  x3
5   y  y2
6   y  y3
7   z  z2
8   x  x4
9   z  z3