Вы можете использовать следующее:
import re
rename_pattern = r'.*\.' # will remove everything until
# the last . in name (greedy regex, longest match)
# applies the lambda mapper
# function to all columns and replaces the rename_pattern with an empty string
df = df.rename(columns=lambda col_name: re.sub(rename_pattern,'',col_name))
Изменить:
Чтобы сохранить только часть имен столбцов, вы можете изменить приведенный выше код следующим образом:
import re
rename_pattern = r'(.*?\.){2}'
df = df.rename(columns=lambda col_name: re.sub(rename_pattern,'',col_name))
( )
в rename_pattern
группирует регулярное выражение и позволяет указать количество вхождений с завершающим {2}
. Если ваш путь длиннее и вам нужно удалить более длинный шаблон, вы можете изменить этот 2
любым числом, которое вам нравится. Еще одно изменение - сделать .*
не жадным сопоставлением с ?
. Это приведет к совпадению только одного слова, за которым следует точка.
Вместо r'(.*?\.){2}'
будет r'(\w+\.){2}'