Убрать повторяющуюся часть заголовков в Pandas Dataframe

Подскажите как убрать "nan|" из названий заголовков в Dataframe Pandas без переименования каждого отдельного столбца?

введите сюда описание изображения

UPD: использовал это решение, подошло

df = df.rename(columns=lambda x: x.replace('nan|',''))


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

Автор решения: Barsucheech

df1

переносим названия столбцов в список

listt = dff.columns.tolist()

меняем в списке части названия на заданные

listt = [i.replace('a', 'd') for i in listt]

устанавливаем новый список в качестве заголовков

dff.columns = listt

dff

df2

→ Ссылка
Автор решения: strawdog

для вашего конкретного случая можно сделать проще. предположим, есть датафрейм:

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|',''))
→ Ссылка
Автор решения: SergFSM

есть еще вариант:

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
→ Ссылка