Python 如何使用条件索引获取单元格上的标量值

Python 如何使用条件索引获取单元格上的标量值,python,pandas,Python,Pandas,我的数据框如下所示。我需要获得B列的标量值,这取决于A的值(A是我脚本中的一个变量)。我正在尝试loc()函数,但它返回的是一个系列,而不是一个标量值。如何获取标量值() >x=pd.DataFrame({'A':[0,1,2],'B':[4,5,6]}) >>>x A B 0 0 4 1 1 5 2 2 6 >>>x.loc[x['A']==2]['B'] 2 6 名称:B,数据类型:int64 >>>类型(x.loc[x['A']==2]['B']) 首先,最好从.loc访

我的数据框如下所示。我需要获得B列的标量值,这取决于A的值(A是我脚本中的一个变量)。我正在尝试loc()函数,但它返回的是一个系列,而不是一个标量值。如何获取标量值()

>x=pd.DataFrame({'A':[0,1,2],'B':[4,5,6]})
>>>x
A B
0  0  4
1  1  5
2  2  6
>>>x.loc[x['A']==2]['B']
2    6
名称:B,数据类型:int64
>>>类型(x.loc[x['A']==2]['B'])

首先,最好从
.loc
访问行和列索引:

x.loc[x['A'] == 2, 'B']
其次,您始终可以在序列或数据帧上使用
.values
获取基础numpy矩阵:

In : x.loc[x['A'] == 2, 'B'].values[0]
Out: 6

最后,如果您对原始问题的“条件索引”不感兴趣,那么还有一些特定的访问器设计用于从数据帧获取单个标量值:or(它们类似于
.loc[]
.iloc[]
,但设计用于快速访问单个值)。

详细说明@ShineZhang注释:

x.set_索引('A')。位于[2',B']

六,

pd.\uuuuuu版本


u'0.22.0'

可能重复我读过上面提到的文章。我的问题是条件索引部分(即x['A']==2)。不确定如何使其与at()、iat()一起工作。谢谢。“您最好从.loc访问行和列索引”我想知道这是什么原因。什么意思?为什么这比OP中发布的方式要好呢?感谢Doing
.values[0]
仅仅获取实际的单元格值是如此笨拙。Pandas开发者真的应该改进这一点。
get\u value
现在已经被弃用了(v0.21.0RC1(2017年10月13日))
。Series、DataFrame、Panel、SparseSeries和SparseSeries上的get\u value和.set\u value都被弃用了,取而代之的是.iat[]或.at[]访问器(GH15269)
x.set\u index('A')。在[2,'B']
这个答案非常简短。也许你可以对它的工作原理做一点解释。
In : x.loc[x['A'] == 2, 'B'].values[0]
Out: 6