#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. Спасибо!! это работает! Я ценю вашу помощь