使用累积计数在 Pandas DataFrame 中附加字符串

Nic*_*ais 2 python dataframe pandas

我有一个pd.DataFrame完整的图片名称。通常,图像名称会重复。但是,他们总是紧挨着对方。这是它的样子:

import pandas as pd
from numpy.random import randint

df = pd.DataFrame(sorted(['image_{}'.format(randint(4)) for i in range(10)]),
     columns=['Image Name'])

print(df)
Run Code Online (Sandbox Code Playgroud)
Out[6]: 
  Image Name
0    image_0
1    image_0
2    image_0
3    image_1
4    image_1
5    image_2
6    image_2
7    image_2
8    image_3
9    image_3
Run Code Online (Sandbox Code Playgroud)

因为我将根据此名称保存图像,所以我想将这些字符串附加到累积计数中,如下所示:

Out[7]: 
  Image Name
0    image_0_1
1    image_0_2
2    image_0_3
3    image_1_1
4    image_1_2
5    image_2_1
6    image_2_2
7    image_2_3
8    image_3_1
9    image_3_1
Run Code Online (Sandbox Code Playgroud)

我该如何继续?我猜是groupby和 的某种组合cumcount

Par*_*ait 5

考虑groupby().cumcount()并连接到原始字符串和顺序无关紧要:

df['Image Name'] = (df['Image Name'] + '_' + 
                      (df.groupby('Image Name').cumcount() + 1).astype(str)
                   )
Run Code Online (Sandbox Code Playgroud)