Скажем, у меня есть простой набор данных (а именно, df1), например:
ID Name Max_FileID
--------------------------------
1 Dog 3
1 Dog 3
1 Dog 3
2 Bird 1
3 Cat 5
3 Cat 5
Я хотел бы сгруппировать набор данных по идентификатору (у меня нет проблем с этим):
df1.groupby('ID')
Затем добавьте новый столбец, используя Max_FileID + Rank.
Результат должен выглядеть следующим образом
ID Name Max_FileID Rank
------------------------------------------
1 Dog 3 4
1 Dog 3 5
1 Dog 3 6
2 Bird 1 2
3 Cat 5 6
3 Cat 5 7
Чтобы лучше понять, чего я пытаюсь достичь, вот эквивалент SQL:
SELECT
ID,
Name,
Max_FileID,
Max_FileID + ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID)
FROM df1
В Кроме того, я создал пользовательскую функцию:
def sequential_ranking(self, iterable, max_id):
try:
max_id = max_id - 1
seq_nums = list()
for num in iterable:
max_id += 1
seq_nums.append(max_id)
return seq_nums
Не уверен, есть ли для нее встроенная функция. Заранее спасибо !!