首页 > 解决方案 > 使用布尔选择选择一个数据框,然后提取对应于某一列的值

问题描述

示例数据框:

import pandas as pd
df = pd.DataFrame({'a': [-3, -2, 0], 'b': [-2, 2, 5], 'c': [-1, 0, 7], 'd': [1, 4, 8]})

我正在尝试做一些我希望相当简单的事情,并且在支持数据框类的其他语言中确实是直接的,例如 R。我只想从 中提取单个值df,我选择的唯一警告是带有布尔表达式的行(例如,“a”==0),而不是使用标签。与往常一样,该列由标签选择。例如,这可行,但似乎不必要地浪费:

df["c"][df["a"]==0][1] 

该指令不是直接从数据帧中提取值,而是 1) 提取 Pandas 系列,2) 选择系列中的一行,3) 选择行选择返回的数组的第二个元素!(第一个元素是索引)。它不仅看起来不必要地复杂,而且我担心它对于非常大的数据帧也会很慢。

我尝试了使用.ator的其他解决方案,.iat但似乎没有任何效果。没有更简单/更智能的方法来做到这一点吗?

标签: pythonpandasboolean-expression

解决方案


你不能一口气做到这一点:

In [11]: df.loc[df["a"]==0, "c"]
Out[11]:
2    7
Name: c, dtype: int64

In [12]: df.loc[df["a"]==0, "c"].iat[0]
Out[12]: 7

推荐阅读