我的数据框如下所示。我需要获取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'>
答案 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'