Python 如何使用条件索引获取单元格上的标量值
我的数据框如下所示。我需要获得B列的标量值,这取决于A的值(A是我脚本中的一个变量)。我正在尝试loc()函数,但它返回的是一个系列,而不是一个标量值。如何获取标量值()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访
>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