我构造了一个条件,从我的数据帧中提取一行:

d2 = df[(df['l_ext']==l_ext) & (df['item']==item) & (df['wn']==wn) & (df['wd']==1)]

现在我想从一个特定的列中取一个值:

val = d2['col_name']

但结果是,我得到的数据帧只包含一行和一列(即一个单元格)。这不是我需要的。我需要一个值(一个浮点数)。在熊猫身上怎么做呢?


当前回答

将它转换为整数对我有用:

int(sub_df.iloc[0])

其他回答

我不确定这是否是一个好的实践,但我注意到我也可以通过将该系列转换为float来获得值。

例如,

rate

3 0.042679

名称:Unemployment_rate, dtype: float64

float(rate)

0.0426789

大多数答案都是使用iloc,它适合按位置选择。

如果需要按标签选择,loc会更方便。

显式获取值(相当于已弃用 df.get_value (' a ', ' ')) #这也等价于df1.at['a',' a'] 在[55]:df1中。loc [' a ', ' ') [55]: 0.13200317033032932

如果你有一个只有一行的DataFrame,那么使用iloc访问第一行作为Series,然后使用列名访问值:

In [3]: sub_df
Out[3]:
          A         B
2 -0.133653 -0.030854

In [4]: sub_df.iloc[0]
Out[4]:
A   -0.133653
B   -0.030854
Name: 2, dtype: float64

In [5]: sub_df.iloc[0]['A']
Out[5]: -0.13365288513107493

你可以把你的1x1数据帧转换成一个NumPy数组,然后访问该数组的第一个也是唯一的值:

val = d2['col_name'].values[0]

我所找到的最快和最简单的方法如下。501表示行索引。

df.at[501, 'column_name']
df.get_value(501, 'column_name')