如何从数据框架的一个单元格中获取一个值?
我构建了一个条件,从我的数据框架中精确提取一行。
d2 = df[(df['l_ext']==l_ext) & (df['item']==item) & (df['wn']==wn) & (df['wd']==1)]
现在我想从一个特定的列中提取一个值。
val = d2['col_name']
但结果是我得到了一个包含一行和一列(i.e.一个单元格)的数据框。这并不是我所需要的。我需要一个值(一个浮点数)。我怎样才能在pandas中做到这一点呢?
289
10
如果你有一个只有一行的DataFrame,那么就用
iloc
访问第一(唯一)行作为一个系列,然后用列名访问值。这些是对标量的快速访问
你可以把你的1x1数据框架变成一个numpy数组,然后访问这个数组的第一个也是唯一的一个值。
大多数答案都在使用
iloc
,这很适合按位置选择。如果你需要 [selection-by-label][1]
loc
会更方便。[1]: http://pandas.pydata.org/pandas-docs/stable/indexing.html#selection-by-label
看起来是在pandas 10.1/13.1之后的变化
我从10.1升级到13.1,之前的iloc是不可用的。
现在用13.1,
iloc[0]['label']
得到的是一个单值数组而不是标量。像这样。
输出。
我需要一个单元格的值,通过列和索引名来选择。 这个解决方案对我来说很有效。
"original_conversion_frequency.loc[1,:].values[0]
我找到的最快速/最简单的选项如下。 501代表行索引。
不知道这是否是一个好的做法,但我注意到我也可以通过将系列投掷为 "浮动 "来获得数值。
例如:
对于pandas 0.10,其中
iloc
是不可变现的,过滤一个DF
,得到VALUE
列的第一行数据。如果有多于1行被过滤,则获取第一行的值。 如果过滤的结果是空数据框,则会出现异常。