Трудности при изменении имен заголовков / столбцов с использованием библиотеки Pandas - PullRequest
0 голосов
/ 16 апреля 2020

РЕДАКТИРОВАТЬ: Как указал пользователь @Mayank Porwal, я забыл указать столбцы ключевых слов в команде df.rename. Я нашел другое решение, предложенное с помощью @ cs95 с использованием str.rstrip для удаления всех суффиксов в заголовках.

df.columns = df.columns.str.rstrip('_TEXT')

ОРИГИНАЛЬНЫЙ ВОПРОС: у меня есть данные, извлеченные из файла CSV. Данные организованы в столбцы с заголовками по общей схеме именования. sh Для автоматического удаления текста (суффикса) в каждом столбце без необходимости указывать имя каждого старого и нового столбца. Ни один из методов, которые я пробовал до сих пор, не работал.

Пример использования Pandas функция переименования

df = pd.read_csv('data.csv')

df.rename({'B1A1 Average Length (um)':'B1A1'}, inplace=True)

df.head()

Возвращает

enter image description here

Любые отзывы и комментарии приветствуются!

Ответы [ 5 ]

1 голос
/ 16 апреля 2020

В этом коде pandas ищите индекс с именем 'B1A1 Average Length (um)', он не будет работать в вашем коде, так как это имя столбца.

  • [ WRONG] df.rename ({'B1A1 Средняя длина (мкм)': 'B1A1'}, на месте = True)
  • [ПРАВИЛЬНО] df.rename ( колонки = {'B1A1 в среднем) Длина (мкм) ':' B1A1 '}, на месте = True)
1 голос
/ 16 апреля 2020

Вы забыли указать ключевое слово columns в команде df.rename. Попробуйте вместо этого:

df.rename(columns={'B1A1 Average Length (um)':'B1A1'}, inplace=True)

Обычно команда выглядит так:

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

OR

df = df.rename(columns={'oldName1': 'newName1', 'oldName2': 'newName2'})
0 голосов
/ 17 апреля 2020

Я нашел решение для удаления суффикса в заголовке, используя str.rstrip

df.columns = df.columns.str.rstrip('_TEXT')
0 голосов
/ 16 апреля 2020
In [111]: df
Out[111]:
   obj  B1A1 Average Length (um)  B1A2 Average Length (um)
0    0                       2.0                       0.0
1    1                       0.0                       3.0

In [112]: df.rename(columns = { col : col.replace('Average Length (um)','').strip() for col in df.columns if 'Average Length (um)' in col } , inplace = True)

In [113]: df
Out[113]:
   obj  B1A1  B1A2
0    0   2.0   0.0
1    1   0.0   3.0
0 голосов
/ 16 апреля 2020

Если суффикс непротиворечивый, вы можете использовать понимание списка и функцию замены, чтобы внести необходимые изменения.

df.columns = [i.replace(" Average Length (um)","") for i in df.columns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...