首页 > 解决方案 > Python Pandas Dataframe.at 函数

问题描述

使用

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'

标签: pythonpandasdataframe

解决方案


将列Asset转换为索引以通过索引中的标签(来自资产列)和列名称进行选择:

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

也可以使用boolean indexing,但输出为空,一个或多个值位于Series

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

因此,对于 Series 的第一个值,可以使用:

a = s.iat[0]

推荐阅读