Data Science

Эффективная модификация ячеек Pandas DataFrame с использованием индексов

Spread the love

DataFrames в Pandas являются основой манипулирования данными в Python. Часто возникает необходимость изменить отдельные ячейки в вашем DataFrame. В этой статье рассматриваются три эффективных метода для достижения этого с использованием индекса DataFrame.

Содержание

  1. Установка значений ячеек с помощью .at
  2. Установка значений ячеек с помощью .loc
  3. Устаревший метод .set_value()

Установка значений ячеек с помощью .at

Оператор .at предлагает высокоэффективный способ доступа и изменения одной ячейки в DataFrame с использованием меток строки и столбца. Его скорость делает его идеальным для присваивания отдельных значений.


import pandas as pd

# Пример DataFrame
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data, index=['A', 'B', 'C'])

# Установка значения ячейки в строке 'B' и столбце 'col1' равным 10
df.at['B', 'col1'] = 10

print(df)

Это выведет:


   col1  col2
A     1     4
B    10     5
C     3     6

.at оптимизирован для скорости и простоты при работе с отдельными ячейками. Однако попытка присвоить несколько значений приведет к ошибке TypeError.

Установка значений ячеек с помощью .loc

Оператор .loc обеспечивает большую гибкость. Он позволяет использовать индексацию на основе меток для строк и столбцов и может обрабатывать присваивание отдельных значений или массивов нескольким ячейкам одновременно.


import pandas as pd

# Пример DataFrame
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data, index=['A', 'B', 'C'])

# Установка значения ячейки в строке 'A' и столбце 'col2' равным 100
df.loc['A', 'col2'] = 100

print(df)

# Установка нескольких значений
df.loc[['A', 'B'], 'col1'] = [5, 15]  #Присваивает 5 A и 15 B
print(df)

Сначала это выведет:


   col1  col2
A     1   100
B     2     5
C     3     6

А затем:


   col1  col2
A     5   100
B    15     5
C     3     6

.loc является наиболее универсальным методом, подходящим как для обновления отдельных ячеек, так и для более сложных сценариев, включающих несколько строк и столбцов. Несмотря на универсальность, для изменения отдельных ячеек .at обычно быстрее.

Устаревший метод .set_value()

Метод .set_value() устарел в новых версиях Pandas. Хотя он может все еще работать в старых версиях, использование .at или .loc настоятельно рекомендуется для лучшей совместимости и производительности. Избегайте использования .set_value() в новом коде.

В заключение, как .at, так и .loc предлагают эффективные способы изменения отдельных ячеек в DataFrame Pandas. Предпочтительнее использовать .at из-за его скорости и простоты при работе с отдельными значениями, а .loc — благодаря его гибкости при работе с несколькими ячейками или более сложными изменениями.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *