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

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

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

val = d2['col_name']

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


当前回答

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

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

其他回答

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

int(sub_df.iloc[0])

这并不需要太复杂:

val = df.loc[df.wd==1, 'col_name'].values[0]

在以后的版本中,你可以简单地这样做来修复它:

val = float(d2['col_name'].iloc[0])

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

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

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

例如,

rate

3 0.042679

名称:Unemployment_rate, dtype: float64

float(rate)

0.0426789