问题描述
首先,最好从中访问行索引和列索引.loc
:
x.loc[x['A'] == 2, 'B']
其次,您始终可以在.values
序列或数据框上使用底层的numpy矩阵:
In : x.loc[x['A'] == 2, 'B'].values[0]
Out: 6
最后,如果您对原始问题的“条件索引”不感兴趣,则还可以使用特定的访问器来从DataFrame中获取单个标量值:dataframe.at[index,
column]
或dataframe.iat[i,
j]
(这些类似于.loc[]
并.iloc[]
设计用于快速访问单个值)
。
解决方法
我有如下所示的数据框。我需要获取列B的标量值,具体取决于A的值(这是我脚本中的变量)。我正在尝试loc()函数,但它返回的是Series而不是标量值。如何获得标量value()?
>>> 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
Name: B,dtype: int64
>>> type(x.loc[x['A'] == 2]['B'])
<class 'pandas.core.series.Series'>