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

时间:2015-06-12 22:31:16

标签: python pandas

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

>>> 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'>

2 个答案:

答案 0 :(得分:24)

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

x.loc[x['A'] == 2, 'B']

其次,你总是可以在系列或数据框架上使用.values获取基础numpy矩阵:

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

更新如果您对原始问题的“条件索引”不感兴趣,还有一个特定的函数用于从DataFrame中获取单个标量值:dataframe.get_value(index, column)

答案 1 :(得分:1)

详细介绍@ShineZhang评论:

x.set_index('A').at[2, 'B']

6

pd.__version__

u'0.22.0'