我有如下所示的数据框。我需要获取列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/

10-12 19:14