Удаление ненужных символов и редактирование имен столбцов в пандах - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть панды df с определенными именами столбцов.Названия столбцов следующие:

u'Kanta / City ', u'Aluepaso / Региональный уровень', u'Akue / District ', u'Seotukartakudi / Код карты', u'k�/ Age ', u'2015', u'2016 ', u'2017', u'2018 '.

Я хотел бы переименовать столбцы в одну строку кода какниже,

'Город', 'Regional_Level', 'District', 'Map_Code', 'Age', '2015', '2016', '2017', '2018'.

Есть ли эффективный способ сделать это (с помощью лямбда-функции)?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Простейшим будет использование replace с использованием регулярных выражений.

>>> df
Empty DataFrame
Columns: [Kanta/City, Aluepaso/Regional Level, Akue/District, Seotukartakudi/Map code, k�/Age, 2015, 2016, 2017, 2018]
Index: []

>>> df.columns.str.replace('.*[\\\/]', '')
Index(['City', 'Regional Level', 'District', 'Map code', 'Age', '2015', '2016',
       '2017', '2018'],
      dtype='object')

Объяснение регулярных выражений:

.* соответствует любому символу (кромеограничители строки)

* Квантификатор - сопоставляет от нуля до неограниченного числа раз столько раз, сколько возможно, возвращая при необходимости (жадность)

Соответствует одному символу, представленному в списке ниже [\\\/]

\\ соответствует символу \ буквально (с учетом регистра)

\/ соответствует символу / буквально (с учетом регистра)

0 голосов
/ 22 ноября 2018

Использование лямбды:

df.rename(columns=lambda x: x.split('/')[1].replace(' ','_') if '/' in x else x, inplace= True)

df.columns
> Index(['City', 'Regional_Level', 'District', 'Map_code', 'Age', '2015', '2016',
           '2017', '2018'],
          dtype='object')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...