Вы можете использовать df.columns.str.contains
:
df = pd.DataFrame({'oldName1': [1,1], 'zzzoldName2': [2,2], 'someoldName3': [3,3]})
converters = {'oldName1': 'newName1','oldName2': 'newName2','oldName3': 'newName3'}
conversion_map = {df.columns[df.columns.str.contains(old)][0]: new for old, new in converters.items()}
df.rename(columns=conversion_map)
>> newName1 newName3 newName2
0 1 3 2
1 1 3 2
Обратите внимание, что [0]
вернет первое совпадение, поэтому вы можете проверить conversion_map
, чтобы увидеть, как меняется имя.Если имя не может быть найдено таким образом, оно поднимет IndexError