我构造了一个条件,从我的数据帧中提取一行:
d2 = df[(df['l_ext']==l_ext) & (df['item']==item) & (df['wn']==wn) & (df['wd']==1)]
现在我想从一个特定的列中取一个值:
val = d2['col_name']
但结果是,我得到的数据帧只包含一行和一列(即一个单元格)。这不是我需要的。我需要一个值(一个浮点数)。在熊猫身上怎么做呢?
我构造了一个条件,从我的数据帧中提取一行:
d2 = df[(df['l_ext']==l_ext) & (df['item']==item) & (df['wn']==wn) & (df['wd']==1)]
现在我想从一个特定的列中取一个值:
val = d2['col_name']
但结果是,我得到的数据帧只包含一行和一列(即一个单元格)。这不是我需要的。我需要一个值(一个浮点数)。在熊猫身上怎么做呢?
当前回答
看起来像是熊猫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
其他回答
我不确定这是否是一个好的实践,但我注意到我也可以通过将该系列转换为float来获得值。
例如,
rate
3 0.042679
名称:Unemployment_rate, dtype: float64
float(rate)
0.0426789
我所找到的最快和最简单的方法如下。501表示行索引。
df.at[501, 'column_name']
df.get_value(501, 'column_name')
对于pandas 0.10(其中iloc不可用),过滤DF并获取VALUE列的第一行数据:
df_filt = df[df['C1'] == C1val & df['C2'] == C2val]
result = df_filt.get_value(df_filt.index[0],'VALUE')
如果过滤了多个行,则获取第一行的值。如果筛选结果为空数据帧,则会出现异常。
在以后的版本中,你可以简单地这样做来修复它:
val = float(d2['col_name'].iloc[0])
大多数答案都是使用iloc,它适合按位置选择。
如果需要按标签选择,loc会更方便。
显式获取值(相当于已弃用 df.get_value (' a ', ' ')) #这也等价于df1.at['a',' a'] 在[55]:df1中。loc [' a ', ' ') [55]: 0.13200317033032932