Python Pandas Dataframe.at функция

#python #pandas #dataframe

#python #панды #фрейм данных

Вопрос:

использование

 a = df.at('x', 'y')
 

должно ли это возвращать значение ячейки в строке, содержащей ‘x’, и заголовок столбца ‘y’?

имеет ли значение, что строка, содержащая ‘x’, не является ни именем строки, ни в первом столбце?

Если это не имеет значения, может кто-нибудь подсказать, в чем может быть проблема здесь.

Вот некоторые примеры данных

      Account   Asset Symbol SecType Currency  Position  Avg cost
0  DU2870371  USDCAD    USD    CASH      CAD -232475.0  1.286397
2  DU2870371  AUDUSD    AUD    CASH      USD  285611.0  0.756396
 

Затем я сохранил это в формате csv.
В другом скрипте я загрузил его из CSV и, используя

 a = df.at['USDCAD', 'Position']
 

Я бы ожидал, что он вернет значение -232475.0
, но вместо этого говорит KeyError: 'USDCAD'

Комментарии:

1. существует проблема с опечаткой, нужно [] , как a = df.at['x', 'y']

2. Если все еще не работает, можете ли вы добавить некоторые примеры данных для вопроса?

Ответ №1:

Преобразовать столбец Asset в индекс для выбора по меткам в индексе (из столбца активов) и именам столбцов:

 df = df.set_index('Asset')
a = df.at['USDCAD', 'Position']
 

Также возможно использование boolean indexing , но вывод пустой, одно или несколько значений в Series :

 s = df.loc[df['Asset'].eq('USDCAD'), 'Position']
 

Итак, для первого значения ряда возможно использование:

 a = s.iat[0]
 

Комментарии:

1. Спасибо!! это работает! Я ценю вашу помощь