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

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

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

val = d2['col_name']

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


当前回答

要获得完整行的值为JSON(而不是一个Serie):

row = df.iloc[0]

像下面这样使用to_json方法:

row.to_json()

其他回答

看起来像是熊猫10.1或13.1之后的变化。

我从10.1升级到13.1。以前,iloc是不可用的。

现在在13.1版本中,iloc[0]['label']获得一个值数组,而不是一个标量。

是这样的:

lastprice = stock.iloc[-1]['Close']

输出:

date
2014-02-26 118.2
name:Close, dtype: float64

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

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

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

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

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

int(sub_df.iloc[0])

要获得完整行的值为JSON(而不是一个Serie):

row = df.iloc[0]

像下面这样使用to_json方法:

row.to_json()