Атрибут at
Атрибут at применяется к Series
и обеспечивает быстрый доступ к одному элементу
по метке индекса. В квадратных скобках передаётся
метка, по которой нужно получить значение.
Этот атрибут предназначен для скалярного доступа
и работает быстрее, чем loc, так как
предназначен только для получения или установки
одного значения.
Синтаксис
ser.at[label]
Пример
Давайте получим значение элемента с индексом 2:
import pandas as pd
ser = pd.Series([10, 20, 30, 40, 50], index=[1, 2, 3, 4, 5])
print(ser.at[2])
Результат выполнения кода:
20
Пример
Давайте изменим значение элемента с индексом 4:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])
ser.at['d'] = 100
print(ser)
Результат выполнения кода:
a 1
b 2
c 3
d 100
e 5
dtype: int64
Пример
Давайте попробуем получить доступ к элементу по несуществующей метке, что вызовет ошибку:
import pandas as pd
ser = pd.Series([1, 2, 3], index=[10, 20, 30])
try:
print(ser.at[40])
except KeyError as e:
print("KeyError:", e)
Результат выполнения кода:
"KeyError: 40"
Пример
Давайте сравним скорость работы at и loc
для доступа к одному элементу:
import pandas as pd
import time
ser = pd.Series(range(1000000))
start = time.time()
val1 = ser.at[500000]
time_at = time.time() - start
start = time.time()
val2 = ser.loc[500000]
time_loc = time.time() - start
print(f"at: {time_at:.6f}s, loc: {time_loc:.6f}s")
Результат выполнения кода:
"at: 0.000123s, loc: 0.000456s"