Как удалить не-ASCII символы и пробелы из имен столбцов - PullRequest
2 голосов
/ 06 марта 2020

У меня есть датафрейм. Многие имена столбцов имеют не ASCII символы и специальные символы like (), /, +,. (не точки ascii в середине) et c и пространства не ascii . Этого не произошло при чтении CSV . Это произошло из-за горячего кодирования. (когда я преобразовал свою категориальную переменную в цифру c столбцы и значения категорий имели значения не ascii)

df

Col1/name   Col 2() name    Col3 + name    Col4 ^¨ name   etc...

Ожидаемый вывод

Мне нужны только цифры, подчеркивания и символы в именах моих столбцов хочу изменить только столбец имена не имеют значения в кадре или строках). Это необходимо, потому что некоторые алгоритмы машинного обучения, такие как lightGBM, не работают с не ASCII-символами или не ASCII-пробелами в именах столбцов.

Ожидаемый вывод df:

Col1name   Col_2_name    Col3__name    Col4__name   etc...

Таким образом, заменив пробел подчеркиванием и удалив любые нечислительные c и не символьные в именах столбцов.

Ответы [ 2 ]

6 голосов
/ 06 марта 2020

В одну сторону, используя pandas.Series.str.replace и findall:

df.columns = ["".join(l) for l in df.columns.str.replace("\s", "_").str.findall("[\w\d]+")]
print(df)

Вывод:

Empty DataFrame
Columns: [Col1name, Col_2_name, Col3__name, Col4__name]
Index: []
1 голос
/ 06 марта 2020

Вы можете использовать метод replace:

df.columns.str.replace('\s+', '_').str.replace('\W+', '')

Вывод:

Index(['Col1name', 'Col_2_name', 'Col3__name', 'Col4__name'], dtype='object')

Вы можете удалить несколько подчеркиваний с помощью str.replace('_{2,}', '_').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...