Как нормализовать имена столбцов с '.1' в имени столбца и не удалять другие символы? - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть df, который выглядит следующим образом:

col1_test   col1_test.1
abc          NaN

Как мне сбросить только .1, сохраняя все остальные символы в имени столбца?

текущий код для удаления .1:

df.columns = df.columns.str.extract(r'\.?', expand=False)

, но это отбрасывает другие символы в имени столбца, как подчеркивание.

Новый df:

col1_test   col1_test
abc          NaN

Как только эта часть будет установлена, я объединю столбцы, используя это:

df = df.groupby(level=0, axis=1).first()

1 Ответ

0 голосов
/ 17 декабря 2018

Это не рекомендуется, потому что становится трудно индексировать определенные столбцы, когда есть повторяющиеся заголовки.

Однако лучшим решением, поскольку попытка выполнить groupby, было бы передать вызываемый элемент.

df
  col1_test  col1_test.1
0       abc          NaN

df.groupby(by=lambda x: x.rsplit('.', 1)[0], axis=1).first()

  col1_test
0       abc

Для справки вы удалили бы суффиксы столбцов с помощьюstr.replace:

df.columns = df.columns.str.replace(r'\.\d+$', '') 

Вы также можете использовать str.rsplit:

df.columns = df.columns.str.rsplit('.', 1).str[0]
df
   col1_test  col1_test
0        abc        NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...