Как переименовать все имена дубликатов столбцов в Dataframe - PullRequest
0 голосов
/ 28 апреля 2019

У меня возникла проблема при переименовании всех повторяющихся имен в столбце данных.

Column 1: x,y,z,....(all different names)
Column 2: a,b,c,.....(all different names)
Column 3: p,pq,r,s,p,s,r,pq,p.....

Мне нужен столбец 3 как p_1, pq_1, r_1, s_1, p_2, s_2, r_2, pq_2, p_3, .....

У меня было много дубликатов в столбце 3, но я хочу назвать все как сказано выше.

Я попробовал приведенный ниже код и получил вывод:

Column 3: p,pq,r,s,p_1,s_1,r_1,pq_1,p_2,.....

def df_name_uniquify(RS):
    df_names = RS["Column 3"]
    new_names = []
    for item in df_names:
        counter = 0
        newitem = item
        while newitem in new_names:
            counter += 1
            newitem = "{}_{}".format(item, counter)
        new_names.append(newitem)
    RS["Column 3"] = new_names
    return RS
df = df_name_uniquify(RS)

Любые предложения или изменения кода будут полезны

Заранее спасибо

1 Ответ

1 голос
/ 28 апреля 2019

Вы можете использовать cumcount() здесь:

df['new_col']=df.Column3+'_'+(df.groupby('Column3').cumcount()+1).astype(str)
print(df)

  Column3 new_col
0       p     p_1
1      pq    pq_1
2       r     r_1
3       s     s_1
4       p     p_2
5       s     s_2
6       r     r_2
7      pq    pq_2
8       p     p_3
...