如何从 Pandas DataFrame 而不是系列(不引用索引)中提取值?

agf*_*ing 5 python dataframe pandas

我正在尝试通过条件选择从 Pandas DataFrame 返回特定项目(并且不想引用索引来这样做)。

下面是一个例子:

我有以下数据框:

  Code  Colour  Fruit
0   1   red     apple
1   2   orange  orange
2   3   yellow  banana
3   4   green   pear
4   5   blue    blueberry
Run Code Online (Sandbox Code Playgroud)

我输入以下代码来搜索蓝莓的代码:

df[df['Fruit'] == 'blueberry']['Code']
Run Code Online (Sandbox Code Playgroud)

这将返回:

4    5
Name: Code, dtype: int64
Run Code Online (Sandbox Code Playgroud)

这是类型:

pandas.core.series.Series
Run Code Online (Sandbox Code Playgroud)

但我真正想要返回的是类型的数字 5:

numpy.int64
Run Code Online (Sandbox Code Playgroud)

如果我输入以下代码,我可以这样做:

df[df['Fruit'] == 'blueberry']['Code'][4]
Run Code Online (Sandbox Code Playgroud)

即引用索引给出数字 5,但我不想引用索引!

我可以在此处部署另一种语法来实现相同的目的吗?

谢谢!...

更新:

另一个想法是以下代码:

df[df['Fruit'] == 'blueberry']['Code'][df[df['Fruit']=='blueberry'].index[0]]
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不是特别优雅(并且它引用了索引)。是否有更简洁和精确的方法不需要引用索引,或者这是绝对必要的?

谢谢!...

Sco*_*ton 7

让我们试试这个:

df.loc[df['Fruit'] == 'blueberry','Code'].values[0]
Run Code Online (Sandbox Code Playgroud)

输出:

5
Run Code Online (Sandbox Code Playgroud)

首先,使用.loc用于行选择的布尔索引和用于列选择的索引标签来访问数据框中的值。将系列返回到值数组的转换,由于该数组中只有一个值,因此您可以使用索引“[0]”从该单个元素数组中获取标量值。