Переименуйте имя столбца в фрейме данных, в котором есть строка, похожая на старое имя - PullRequest
0 голосов
/ 30 января 2019

Я хочу переименовать имя столбца в кадре данных.Данные поступают на лету, и имя столбца также может содержать не английские символы.Поэтому я ищу что-то вроде:

df = df.rename(columns={'string include (oldName1)': 'newName1', 'string include (oldName2)': 'newName2'}

Текущая функция переименования в Pandas:

df = df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'})

Для этой функции требуется точное имя столбца 'oldName1'.Я хочу переименовать столбец, даже если старое имя содержит строку типа / в 'oldName1'.

1 Ответ

0 голосов
/ 30 января 2019

Вы можете использовать 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

...