У меня есть CSV-файл без заголовка с индексом DateTime. Я хочу переименовать индекс и имя столбца, но с помощью df.rename () переименовывается только имя столбца. Ошибка? Я на версии 0.12.0
In [2]: df = pd.read_csv(r'D:\Data\DataTimeSeries_csv//seriesSM.csv', header=None, parse_dates=[[0]], index_col=[0] )
In [3]: df.head()
Out[3]:
1
0
2002-06-18 0.112000
2002-06-22 0.190333
2002-06-26 0.134000
2002-06-30 0.093000
2002-07-04 0.098667
In [4]: df.rename(index={0:'Date'}, columns={1:'SM'}, inplace=True)
In [5]: df.head()
Out[5]:
SM
0
2002-06-18 0.112000
2002-06-22 0.190333
2002-06-26 0.134000
2002-06-30 0.093000
2002-07-04 0.098667
rename_axis
метода.df.rename_axis("Date", axis='index', inplace=True)
в соответствии с документацией pandas.pydata.org/pandas-docs/stable/generated/… илиdf.index.names = ['Date']
Ответы:
rename
Метод принимает словарь для индекса , который применяется к индексным значениям .Вы хотите переименовать в имя уровня индекса:
Хороший способ думать об этом состоит в том, что столбцы и индекс - это один и тот же тип объекта (
Index
илиMultiIndex
), и вы можете поменять их местами с помощью транспонирования.Это немного сбивает с толку, так как имена индексов имеют значение, аналогичное столбцам, поэтому вот еще несколько примеров:
Вы можете увидеть переименование по индексу, которое может изменить значение 1:
Переименовывая имена уровней:
Примечание: этот атрибут является просто списком, и вы можете сделать переименование в виде списка / карты.
источник
"inplace =True"
, наdf1.rename
самом деле ничего не изменится.В текущем выбранном ответе не упоминается
rename_axis
метод, который можно использовать для переименования уровней индекса и столбца.Панды имеют некоторую причудливость, когда дело доходит до переименования уровней индекса. Также
rename_axis
доступен новый метод DataFrame для изменения имен на уровне индекса.Давайте посмотрим на DataFrame
Этот DataFrame имеет один уровень для каждого индекса строки и столбца. И индекс строки, и столбец не имеют имени. Давайте изменим имя уровня индекса строки на «имена».
У
rename_axis
метода также есть возможность изменить имена уровня столбца, изменивaxis
параметр:Если вы установите индекс для некоторых столбцов, то имя столбца станет именем нового уровня индекса. Давайте добавим уровни индекса к нашему исходному DataFrame:
Обратите внимание, что у исходного индекса нет имени. Мы все еще можем использовать,
rename_axis
но нам нужно передать ему список той же длины, что и количество уровней индекса.Вы можете использовать
None
для эффективного удаления имен уровня индекса.Сериалы работают аналогично, но с некоторыми отличиями
Давайте создадим серию с тремя уровнями индекса
Мы можем использовать
rename_axis
аналогично тому, как мы сделали с DataFramesОбратите внимание, что под серией есть дополнительный фрагмент метаданных
Name
. При создании Series из DataFrame этому атрибуту присваивается имя столбца.Мы можем передать имя строки
rename
методу, чтобы изменить егоУ DataFrames нет этого атрибута, и infact вызовет исключение, если используется так
До появления панды 0.21 вы могли бы использовать
rename_axis
для переименования значений в индексе и столбцах. Это устарело, так что не делайте этогоисточник
df1 = df.set_index(['state', 'color'], append=True)
сdf1.rename_axis(['names', None, 'Colors'])
?Для новых
pandas
версийили
Последнее требуется, если фрейм данных должен сохранить все свои свойства.
источник
В версии Pandas 0.13 и выше имена уровня индекса являются неизменяемыми (тип
FrozenList
) и больше не могут быть установлены напрямую. Сначала необходимо использовать,Index.rename()
чтобы применить новые имена уровня индекса к Индексу, а затем использовать,DataFrame.reindex()
чтобы применить новый индекс к DataFrame. Примеры:Для версии Pandas <0,13
Для версии Pandas> = 0,13
источник
index
илиcolumn
сразу меняется как для меня (на Pandas 0.19), но не с этим методом.Вы также можете использовать
Index.set_names
следующее:источник
multiIndex
?MultiIndex(levels=[['A', 'B', 'C', 'D', 'E', 'F'], ['Y', 'Z']], labels=[[0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5], [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]], names=['Portfolio', None])
Можно ли переименоватьNone
вmeasures
?Если вы хотите использовать одно и то же отображение для переименования обоих столбцов и индекса, вы можете сделать следующее:
источник
Это единственный, кто выполняет эту работу за меня (панды 0.22.0).
Без inplace = True, имя индекса не устанавливается в моем случае.
источник
Вы можете использовать
index
иcolumns
атрибутыpandas.DataFrame
. ПРИМЕЧАНИЕ: количество элементов списка должно соответствовать количеству строк / столбцов.источник