我有如下所示的数据框。我需要获取列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'>
最佳答案
首先,最好从.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[]
,但旨在快速访问单个值)。关于python - 如何使用条件索引获取单元格上的标量值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30813088/