Убрать повторяющуюся часть заголовков в Pandas Dataframe
Подскажите как убрать "nan|" из названий заголовков в Dataframe Pandas без переименования каждого отдельного столбца?
UPD: использовал это решение, подошло
df = df.rename(columns=lambda x: x.replace('nan|',''))
Ответы (3 шт):
переносим названия столбцов в список
listt = dff.columns.tolist()
меняем в списке части названия на заданные
listt = [i.replace('a', 'd') for i in listt]
устанавливаем новый список в качестве заголовков
dff.columns = listt
dff
для вашего конкретного случая можно сделать проще. предположим, есть датафрейм:
import pandas as pd
df = pd.DataFrame({"nan|one":[1,2,3],"nan|two":[11,22,33],"nan|three":[111,222,333]})
nan|one nan|two nan|three
0 1 11 111
1 2 22 222
2 3 33 333
делаем простое преобразование:
df.columns = df.columns.str.split("|").str[1]
теперь df:
one two three
0 1 11 111
1 2 22 222
2 3 33 333
И я бы советовал обратить внимание на комментарий пользователя @passant - возможно, проще было бы избавиться от таких имен на этапе формирования датафрейма.
UPDATE
в боле общем случае можно обойтись лямбдой и replace
df = df.rename(columns=lambda x: x.replace('nan|',''))
есть еще вариант:
df = pd.DataFrame({'nan|col1': [1,2,3],'nan|col2':[4,5,6],'nan|col3':[7,8,9]})
'''
nan|col1 nan|col2 nan|col3
0 1 4 7
1 2 5 8
2 3 6 9
'''
df = df.rename(lambda x: x[4:],axis=1)
'''
col1 col2 col3
0 1 4 7
1 2 5 8
2 3 6 9


