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

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

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

val = d2['col_name']

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


当前回答

这并不需要太复杂:

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

其他回答

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

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

如果你有一个只有一行的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

这并不需要太复杂:

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

我需要一个单元格的值,按列名和索引名选择。 这个解决方案对我很有效:

original_conversion_frequency.loc [1:] . values [0]

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

row = df.iloc[0]

像下面这样使用to_json方法:

row.to_json()