Переименовать Pandas DataFrame Index

У меня есть файл 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 

  • Dataframe Применить метод для возврата нескольких элементов (серий)
  • Как просмотреть часть большого панда DataFrame?
  • Линейное программирование (Simplex LP) PuLP?
  • Получить строки, которые имеют одинаковое значение по всем столбцам в пандах
  • Удаление пространства в python dataframe
  • Объедините два столбца текста в dataframe в pandas / python
  • выбор из мультииндексных панд
  • Вывод данных из всех столбцов в кадре данных в пандах
  • перетасовка / перестановка DataFrame в пандах
  • Легенда показывает только одну метку при построении с пандами
  • Оценка значений серии pandas с помощью логических выражений и if-операторов
  • Python упорядочивает нерегулярные временные ряды с линейной интерполяцией
  • 4 Solutions collect form web for “Переименовать Pandas DataFrame Index”

    Метод rename использует словарь для индекса, который применяется к значениям индекса.
    Вы хотите переименовать имя индекса:

     df.index.names = ['Date'] 

    Хороший способ подумать об этом состоит в том, что столбцы и индекс являются одним и тем же типом объекта ( Index или MultiIndex ), и вы можете обменивать два на транспонирование.

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

     In [1]: df = pd.DataFrame([[1, 2, 3], [4, 5 ,6]], columns=list('ABC')) In [2]: df Out[2]: ABC 0 1 2 3 1 4 5 6 In [3]: df1 = df.set_index('A') In [4]: df1 Out[4]: BC A 1 2 3 4 5 6 

    Вы можете увидеть переименование индекса, который может изменить значение 1:

     In [5]: df1.rename(index={1: 'a'}) Out[5]: BC A a 2 3 4 5 6 In [6]: df1.rename(columns={'B': 'BB'}) Out[6]: BB C A 1 2 3 4 5 6 

    Переименование имен уровней:

     In [7]: df1.index.names = ['index'] df1.columns.names = ['column'] 

    Примечание. Этот атрибут – это всего лишь список, и вы можете переименовать его как список / карту.

     In [8]: df1 Out[8]: column BC index 1 2 3 4 5 6 

    В версии Pandas 0.13 и выше имена индексов являются неизменяемыми (тип FrozenList ) и больше не могут быть установлены напрямую. Сначала вы должны использовать Index.rename() чтобы применить новые индексы к индексу, а затем использовать DataFrame.reindex() для применения нового индекса к DataFrame. Примеры:

    Для версии Pandas <0,13

     df.index.names = ['Date'] 

    Для версии Pandas> = 0,13

     df = df.reindex(df.index.rename(['Date'])) 

    Вы также можете использовать Index.set_names следующим образом:

     In [25]: x = pd.DataFrame({'year':[1,1,1,1,2,2,2,2], ....: 'country':['A','A','B','B','A','A','B','B'], ....: 'prod':[1,2,1,2,1,2,1,2], ....: 'val':[10,20,15,25,20,30,25,35]}) In [26]: x = x.set_index(['year','country','prod']).squeeze() In [27]: x Out[27]: year country prod 1 A 1 10 2 20 B 1 15 2 25 2 A 1 20 2 30 B 1 25 2 35 Name: val, dtype: int64 In [28]: x.index = x.index.set_names('foo', level=1) In [29]: x Out[29]: year foo prod 1 A 1 10 2 20 B 1 15 2 25 2 A 1 20 2 30 B 1 25 2 35 Name: val, dtype: int64 

    Если вы хотите использовать одно и то же сопоставление для переименования столбцов и индекса, вы можете:

     mapping = {0:'Date', 1:'SM'} df.index.names = list(map(lambda name: mapping.get(name, name), df.index.names)) df.rename(columns=mapping, inplace=True) 
    Python - лучший язык программирования в мире.