python - 使用布尔选择选择一个数据框,然后提取对应于某一列的值
问题描述
示例数据框:
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) 选择行选择返回的数组的第二个元素!(第一个元素是索引)。它不仅看起来不必要地复杂,而且我担心它对于非常大的数据帧也会很慢。
我尝试了使用.at
or的其他解决方案,.iat
但似乎没有任何效果。没有更简单/更智能的方法来做到这一点吗?
解决方案
你不能一口气做到这一点:
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
推荐阅读
- javascript - 两个绝对 div 顶部和底部
- r - 如何通过R中数据框中的列表运行for循环
- angular - 如何在 Angular5 应用程序中使用 in-memory-web-api 和真实服务 API
- sparql - Wikidata:SPARQL 仅在项目不包含属性时选择项目
- javascript - 如何使用 d3.js 可视化 JSON 树图?
- apache-flink - 相当于 Flink-SQL 中的“from_unixtime(bigint unixtime)”
- d3.js - 从函数内部调用 d3-tip“tip.show”时出错
- owl - 如何在 OWL / GraphDB 中推断具有 2 个以上属性的个体?
- google-bigquery - 大查询 - 日期比较
- javascript - 在播放完所有以前的动画后,我应该如何暂停 SVG 动画以保持静态图像?