Как фильтровать CSV таблицы?

Имеется CSV файл следующей структуры:

Name1; some_property; file0
Name1; some_property; file1

Name2; some_property; _file2
Name2; some_property; _file1
Name2; some_property; _file3

То есть, у каждого наименования есть ряд файлов.

Файл с наименьшим числом в конце - это основной файл.
Нужно найти для каждого наименования файл с наименьшим числом в конце и добавить данную строку в новую таблицу, то есть на выходе должно быть так:

Name1; some_property; file0
Name2; some_property; _file1

Первое, что приходит в голову - это составить список из наименований и прогнать цикл через них:

names = []
f = open('path', 'r')

#Сохраним имена в список
for i in f:
    name = i.split(';')[0]
    # print(name)
    names.append(name)


#Оставим только уникальные имена
names_unique = list(set(names))

Далее, логично итерировать по списку имен и файлу, но пока безуспешно, так как не получается грамотно это сделать.

То есть, нужно сделать "прогон" для каждого имени, где в случае совпадения с первой частью разделённой строки файла будет находится последний символ последней части. Если он равен нулю - строка попадает в новый список или файл, если нет, продолжается цикл.

Почти уверен, что есть варианты значительно проще, о которых я не знаю.


Ответы (1 шт):

Автор решения: MaxU
idx = (df
       .assign(n=df["file"].str.extract(r"(\d+)$").astype(int))
       .groupby("name")
       ["n"]
       .idxmin()
       .to_numpy())

res = df.loc[idx]

результат:

In [15]: res
Out[15]:
    name       property    file
0  Name1  some_property   file0
3  Name2  some_property  _file1
→ Ссылка