DataFrames в Pandas являются основой манипулирования данными в Python. Часто возникает необходимость изменить отдельные ячейки в вашем DataFrame. В этой статье рассматриваются три эффективных метода для достижения этого с использованием индекса DataFrame.
Содержание
- Установка значений ячеек с помощью
.at
- Установка значений ячеек с помощью
.loc
- Устаревший метод
.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
— благодаря его гибкости при работе с несколькими ячейками или более сложными изменениями.