Python pandas: столбец с упорядоченными именами файлов на основе заданной последовательности

Я хотел бы создать столбец в кадре данных, который содержит список имен файлов на основе определенного порядкового номера.

У меня есть основной фрейм данных, который выглядит так:

  num letter 
0    0    I   
1    1    P  
2    2    I  
2    3    B  
2    4    P  
2    5    B  
2    6    I  

и имена файлов у меня есть: I-0001.jpg, I-0002.jpg, I-0003.jpg, P-0001.jpg, P-0002.jpg, B-0001.jpg, B-0002.jpg

Конечный результат, который я хотел бы получить:

   num  letter  file
0    0    I   I-0001.jpg
1    1    P   P-0001.jpg
2    2    I   I-0002.jpg
2    3    B   B-0001.jpg
2    4    P   P-0002.jpg
2    5    B   B-0002.jpg
2    6    I   I-0003.jpg

Таким образом, в основном, файл столбца должен быть таким, чтобы каждый раз, когда я, или P, или B в столбце "буквы" находились, он выбирал имя файла, имеющее I, P или B, в имени файла на основе нумерации в каждом файле.

Любая помощь?

1 ответ

Решение

Вы можете присоединиться к колонке letter с Series создано GroupBy.cumcount для счетчика за letter s, добавить 1, преобразовать в string s и при необходимости добавить str.zfill:

df['file'] = (df['letter'] + '-' +
              df.groupby('letter').cumcount().add(1).astype(str).str.zfill(4) + '.jpg')
print (df)
   num letter        file
0    0      I  I-0001.jpg
1    1      P  P-0001.jpg
2    2      I  I-0002.jpg
2    3      B  B-0001.jpg
2    4      P  P-0002.jpg
2    5      B  B-0002.jpg
2    6      I  I-0003.jpg

Деталь:

print (df.groupby('letter').cumcount())
0    0
1    0
2    1
2    0
2    1
2    1
2    2
dtype: int64

print (df.groupby('letter').cumcount().add(1).astype(str).str.zfill(4))
0    0001
1    0001
2    0002
2    0001
2    0002
2    0002
2    0003
dtype: object
Другие вопросы по тегам