Переименование одинаковых меток в кадре данных - PullRequest
0 голосов
/ 01 апреля 2019

У меня сейчас нет своего кода, и я не могу опубликовать его; однако я делаю метод .drop_duplicates для фрейма данных и имею несколько строк с одной и той же меткой. Как переименовать метки так, чтобы имя «Терри» сменилось на «Терри 1», «Терри 2», «Терри 3» и т. Д.

Вот некоторый макет кода:

series1 = ['M','M','S','S','S','T','T']
series2 = [1,2,1,1,3,4,4]
series3 = [2,4,2,2,2,2,2]
data = pd.DataFrame.from_dict({'Name':series1,'Number 1': series2,'Number 2':series3})

Я пытаюсь изменить имена на M_0, M_1, S_0, S_1, S_0 и т. Д. ... в зависимости от того, соответствует ли оно предыдущему ярлыку

1 Ответ

0 голосов
/ 01 апреля 2019

Может быть, это поможет. Мой образец df:

       col2
col1       
Jack      1
Terry     2
Paul      3
Terry     4
Terry     5

Затем я помещу указатель в список и использую функцию Йохена Ритцеля в этом решении для устранения дубликатов (я изменил его функцию, добавив число после дублирующего индекса).

Функция здесь:

def rename_duplicates(old): 
        seen = {} 
        for x in old: 
            if x in seen: 
                seen[x] += 1 
                yield "%s%d" % (x, seen[x]) 
            else: 
                seen[x] = 0 
                yield x 

Затем сохраните новый индекс:

new_index = list(rename_duplicates(indexList))

Теперь все, что вам нужно сделать, это изменить индекс в вашей текущей df на новый следующим образом:

df.reset_index(drop=True, inplace=True)
df.index = new_index
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...