Как постепенно подсчитывать каждое отдельное значение в фрейме данных pandas

#python #pandas

#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:

Предполагается 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