поменять индексы в dataframe
Python | Изменить имена столбцов и индексы строк в Pandas DataFrame
Учитывая Pandas DataFrame, давайте посмотрим, как изменить имена его столбцов и индексы строк.
О Pandas DataFrame
Pandas DataFrame — это прямоугольные сетки, которые используются для хранения данных. Это легко визуализировать и работать с данными, когда хранятся в dataFrame.
Тип Pandas Dataframe имеет два атрибута, называемых «столбцы» и «индекс», которые можно использовать для изменения имен столбцов, а также индексов строк.
Создать DataFrame, используя словарь.
# сначала импортировать библиотеки
import pandas as pd
# Создать dataFrame, используя словарь
# Создает dataFrame с
# 2 столбца и 4 строки
df
# Давайте переименуем уже созданный dataFrame.
# Проверьте текущие имена столбцов
# используя атрибут «столбцы».
# df.columns
# Изменить имена столбцов
# Изменить индексы строк
# печать фрейма данных
df
# давайте изменим имя первого столбца
# от «A» до «a» с помощью функции rename ()
Изменить несколько имен столбцов одновременно —
# Мы можем изменить несколько имен столбцов
# передача словаря старых имен и
# новые имена для функции rename ().
Лямбда-функция — это небольшая анонимная функция, которая может принимать любое количество аргументов, но может иметь только одно выражение. Используя лямбда-функцию, мы можем изменить все имена столбцов одновременно. Давайте добавим ‘x’ в конце имени каждого столбца, используя лямбда-функцию
df = df.rename(columns = lambda x: x + ‘x’ )
# это изменит все имена столбцов
df
Давайте изменим индекс строки, используя функцию Lambda.
# Чтобы изменить индексы строк
# это увеличит значение индекса строки на 10 для каждой строки
df = df.rename(index = lambda x: x + 10 )
Теперь, если мы хотим изменить индексы строк и имена столбцов одновременно, то это может быть достигнуто с помощью функции rename() и передачей атрибута столбца и индекса в качестве параметра.
columns = lambda x: x + ‘x’ )
# увеличить все метки индекса строки на значение 5
# добавьте значение ‘x’ в конце имени каждого столбца.
df
Возможности объектов Index в pandas / pd 3
В отличие от других структур данных в Python pandas не только пользуется преимуществами высокой производительности массивов NumPy, но и добавляет в них индексы.
Этот выбор оказался крайне удачным. Несмотря на и без того отличную гибкость, которая обеспечивается существующими динамическими структурами, внутренние ссылки на их элементы (а именно ими и являются метки) позволяют разработчикам еще сильнее упрощать операции.
В этом разделе речь пойдет о некоторых базовых функциях, использующих этот механизм:
Переиндексирование df.reindex()
Вы уже знаете, что после объявления в структуре данных объект Index нельзя менять. Но с помощью операции переиндексирования это можно решить.
Существует даже возможность получить новую структуру из уже существующей, где правила индексирования заданы заново.
При операции переиндексирования можно поменять порядок индексов, удалить некоторые из них или добавить новые. Если метка новая, pandas добавит NaN на место соответствующего значения.
В этом случае значения индексов 1 и 2 равны 5, которое принадлежит индексу 3.
item | colors | price | new | object |
---|---|---|---|---|
id | ||||
0 | blue | 1.2 | blue | ball |
1 | green | 1.0 | green | pen |
2 | yellow | 3.3 | yellow | pencil |
3 | red | 0.9 | red | paper |
4 | white | 1.7 | white | mug |
Удаление
Еще одна операция, связанная с объектами Index — удаление. Удалить строку или колонку не составит труда, потому что метки используются для обозначения индексов и названий колонок.
Например, возьмем в качестве примера случай, где из объекта нужно удалить один элемент. Для этого определим базовый объект Series из четырех элементов с 4 отдельными метками.
Для удаления большего количества элементов, передайте массив с соответствующими индексами.
ball | pen | pencil | paper | |
---|---|---|---|---|
red | 0 | 1 | 2 | 3 |
blue | 4 | 5 | 6 | 7 |
yellow | 8 | 9 | 10 | 11 |
white | 12 | 13 | 14 | 15 |
Для удаления строк просто передайте индексы строк.
ball | pen | pencil | paper | |
---|---|---|---|---|
red | 0 | 1 | 2 | 3 |
white | 12 | 13 | 14 | 15 |
ball | paper | |
---|---|---|
red | 0 | 3 |
blue | 4 | 7 |
yellow | 8 | 11 |
white | 12 | 15 |
Арифметика и выравнивание данных
Наверное, самая важная особенность индексов в этой структуре данных — тот факт, что pandas может выравнивать индексы двух разных структур. Это особенно важно при выполнении арифметических операций на их значениях. В этом случае индексы могут быть не только в разном порядке, но и присутствовать лишь в одной из двух структур.
В качестве примера можно взять два объекта Series с разными метками.
При использовании Dataframe выравнивание работает по тому же принципу, но проводится и для рядов, и для колонок.
Переиндексация в Pandas DataFrame
Переиндексация в Pandas может использоваться для изменения индекса строк и столбцов в DataFrame. Индексы могут использоваться со ссылкой на множество индексов DataStructure, связанных с несколькими рядами панд или пандой DataFrame. Давайте посмотрим, как мы можем переиндексировать столбцы и строки в Pandas DataFrame.
Переиндексация строк
Пример № 1:
# импорт модуля numpy и pandas
import pandas as pd
import numpy as np
# создать фрейм данных случайных значений массива
columns = column, index = index)
Выход:
Пример № 2:
# импорт модуля numpy и pandas
import pandas as pd
import numpy as np
# создать фрейм данных случайных значений массива
columns = column, index = index)
# создать новый индекс для строк
Выход:
Переиндексация столбцов с помощью ключевого слова axis
Можно переиндексировать один столбец или несколько столбцов, используя reindex() и указав axis мы хотим переиндексировать. Значения по умолчанию в новом индексе, которых нет в кадре данных, назначаются NaN.
Пример № 1:
# импорт модуля numpy и pandas
import pandas as pd
import numpy as np
# создать фрейм данных случайных значений массива
columns = column, index = index)
# создать новый индекс для столбцов
print (df1.reindex(colum, axis = ‘columns’ ))
Выход:
Пример № 2:
# импорт модуля numpy и pandas
import pandas as pd
import numpy as np
# создать фрейм данных случайных значений массива
columns = column, index = index)
# создать новый индекс для столбцов
print (df1.reindex(colum, axis = ‘columns’ ))
Выход:
Замена пропущенных значений
# импорт модуля numpy и pandas
import pandas as pd
import numpy as np
# создать фрейм данных случайных значений массива
columns = column, index = index)
# создать новый индекс для столбцов
Выход:
Код № 2: замена отсутствующих данных строкой.
# импорт модуля numpy и pandas
import pandas as pd
import numpy as np
# создать фрейм данных случайных значений массива
columns = column, index = index)
# создать новый индекс для столбцов
Выход:
Пандас переименовать столбец и индекс
Pandas переименовывает столбец и индекс с использованием функции Rename (). Мы можем переименовать одноместные и несколько столбцов, Inflace переименовать, переименовать, используя функцию Dict или Mapper.
Иногда мы хотим переименовать столбцы и индексы в объекте PandaFrame PandaS. Мы можем использовать функцию Pandas DataFrame Rename () для переименования столбцов и индексов. Он поддерживает следующие параметры.
Некоторые важные моменты о функции Rename ().
Давайте посмотрим на некоторые примеры использования функции Pandas Rename ().
1. Пандас переименовывает столбцы
Вышеупомянутый Rename () вызов функции также может быть написан следующим образом.
Ясно, что использование аргументов ключевых слов яснее, чем использование аргументов Mapper и Axis.
2. Пандас переименовать один столбец
Если вы хотите переименовать один столбец, просто пройдите пару одной пары ключа в параметре Dict Columns.
Результатом будет одинаковым, если в словаре столбцов есть не совпадение сопоставления.
3. Пандас переименовывает индексы
Если вы хотите переименовать индексы, пройдите Dict для параметра «Индекс».
Мы также можем переименовать индексы, используя аргументы Mapper и Axis.
4. Пандас переименовать один индекс
5. Изменение DataFrame Inplace
Если вы хотите изменить само по себе исходный файл DataFrame, пройдите аргумент Inflace как True.
Переименовать Pandas DataFrame Index
У меня есть файл csv без заголовка с индексом DateTime. Я хочу переименовать имя индекса и столбца, но с именем df.rename() будет переименовано только имя столбца. Ошибка? Я на версии 0.12.0
6 ответов
Метод rename принимает словарь для индекса, который применяется к значениям индекса.
Вы хотите переименовать имя индекса:
Хороший способ подумать о том, что столбцы и индекс являются одним и тем же типом объекта ( Index или MultiIndex ), и вы можете поменять их на два транспонирования.
Это немного запутанно, так как имена индексов имеют одинаковое значение для столбцов, поэтому вот еще несколько примеров:
Вы можете увидеть переименование индекса, которое может изменить значение 1:
Во время переименования имен уровней:
Для Pandas версии = 0.13
Вы также можете использовать Index.set_names следующим образом:
Посмотрим на DataFrame
Этот DataFrame имеет один уровень для каждого индекса строки и столбца. Оба индекса строки и столбца не имеют имени. Позвольте изменить имя уровня индекса строки на «имена».
Метод rename_axis также имеет возможность изменять имена столбцов, изменяя параметр axis :
Если вы установите индекс с некоторыми из столбцов, то имя столбца станет новым именем индекса. Давайте добавим к уровням индексов наш исходный DataFrame:
Вы можете использовать None для эффективного удаления имен индекса.
Серии работают аналогично, но с некоторыми отличиями
Создайте серию с тремя уровнями индекса
Мы можем использовать rename_axis аналогично тому, как мы это делали с DataFrames
Обратите внимание, что над серией под номером Name имеется дополнительный фрагмент метаданных. При создании серии из DataFrame этот атрибут устанавливается на имя столбца.
DataFrames не имеет этого атрибута, и infact будет вызывать исключение, если оно используется как
До pandas 0.21 вы могли бы использовать rename_axis для переименования значений в индексе и столбцах. Он устарел, поэтому не делайте этого