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