#python #pandas #rename
#питон #панды #переименовать
Вопрос:
Я пытаюсь переименовать имена столбцов из фрейма данных, в имени которых есть пробел. Фрейм данных (df) состоит из 45 столбцов, и большинство из них имеют пробелы в имени. Например: df.column.values [1] = 'Date Release'
, и имя должно быть изменено на 'Date_Release'
. Я пытался DataFrame.rename ()
, DataFrame.columns.values[]
но у меня ничего не получилось. Я был бы очень признателен, если бы вы помогли мне выяснить, что я сделал не так
for colmns in df:
if ' ' in colmns:
colmns_new = '_'.join(colmns.split())
df = df.rename (columns = {""%s"" %colmns : ""%s"" %colmns_new})
else:
print (colmns)
print (df)
или вот этот:
for i in range (len(df.columns)):
old= df.columns.values[i]
if ' ' in old:
new = '_'.join(old.split())
df = df.columns.values[i] = ['%s' % new]
print (""%s"" % new)
print (df)
Ошибка: ошибка атрибута: объект ‘list’ не имеет атрибута ‘columns’
Комментарии:
1. Вы можете просто указать
df.columns.str.replace(' ','_')
, и он заменит столбцы, в которых есть пробел, символом подчеркивания
Ответ №1:
import pandas as pd
df.columns = [i.replace(' ','_') for i in df.columns]
Комментарии:
1. Большое спасибо. Не будучи опытным программистом, я два дня пытался найти решение.
Ответ №2:
Вы можете использовать регулярное выражение для замены пробелов символом подчеркивания
Вот пример df с некоторыми столбцами, содержащими пробелы,
cols = ['col {}'.format(i) for i in range(1, 10, 1)] ['col10']
df = pd.DataFrame(columns = cols)
import re
df.columns = [re.sub(' ','_',i) for i in df.columns]
Вы получаете
col_1 col_2 col_3 col_4 col_5 col_6 col_7 col_8 col_9 col10
Ответ №3:
Вы можете просто указать df.columns = df.columns.str.replace(' ','_')
, чтобы заменить пробел символом подчеркивания.
Вот пример. Здесь в столбце a1
нет пробела. Однако столбцы b 2
и c 3
имеют пробел.
>>> df = pd.DataFrame({'a1': range(1,5), 'b 2': list ('abcd'), 'c 3':list('pqrs')})
>>> df
a1 b 2 c 3
0 1 a p
1 2 b q
2 3 c r
3 4 d s
>>> df.columns = df.columns.str.replace(' ','_')
>>> df
a1 b_2 c_3
0 1 a p
1 2 b q
2 3 c r
3 4 d s