Невозможно переименовать первый столбец в панде DataFrame - PullRequest
0 голосов
/ 18 сентября 2018

Использовали pandas в течение нескольких лет, но никогда не видели такого поведения. Я использую версию 0.18.1. У меня есть .csv файл со следующим содержимым:

id;foo;bar
100001;11-22;spam
100002;22-33;spamspam

Я читаю это в DataFrame:

pd.read_csv(csv_path, sep=';', index_col=False, encoding='UTF-8')

Вот что я получаю:

      id    foo       bar
0  100001  11-22      spam
1  100002  22-33  spamspam

Теперь я бы хотел переименовать поле id в new_id:

df.rename(index=str, columns={'id': 'new_id'}, inplace=True)

Однако он оставляет столбец id с тем же именем.

Столбец id присутствует в df.columns:

df.columns
Index([u'id', u'foo', u'bar'], dtype='object')

И его индекс:

df.index
Index([u'0', u'1'], dtype='object')

Попытка переименовать столбцы foo или bar работает должным образом:

df.rename(index=str, columns={'foo': 'new_foo'}, inplace=True)

      id new_foo       bar
0  100001   11-22      spam
1  100002   22-33  spamspam

Я подумал, что это может быть что-то особенное в ключевом слове id, однако такое же поведение можно наблюдать, переименовав столбец id во что-то другое. Как переименовать первый столбец во фрейме данных?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Я сделал то же самое на тех же данных.Это нормально работает для меня.Так что не удалось найти ошибку.Но могу сказать другой вариант, который вы уже знаете.

df.columns = ['new_id', 'foo', 'bar']
0 голосов
/ 18 сентября 2018

Похоже, странная ошибка, вы можете назначить новые имена столбцов:

df.columns = ['new_id'] + df.columns.tolist()[1:]
print (df)
   new_id    foo       bar
0  100001  11-22      spam
1  100002  22-33  spamspam

В пандах 0.23.4 rename с id хорошо работает.

Если проблема с BOM это было разрешено в пандах 0.19.0 .

Возможное решение - изменить encoding в вашей версии панд:

df = csv_path, sep=';', index_col=False, encoding='UTF-16')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...