如何从数据框的单元格中获取值?

新手上路,请多包涵

我已经构建了一个从我的数据框中准确提取一行的条件:

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

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

 val = d2['col_name']

但结果,我得到一个包含一行和一列(即一个单元格)的数据框。这不是我需要的。我需要一个值(一个浮点数)。我怎样才能在熊猫中做到这一点?

原文由 Roman 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 563
2 个回答

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

原文由 Andy Hayden 发布,翻译遵循 CC BY-SA 4.0 许可协议

这些是标量的快速访问方法:

 In [15]: df = pandas.DataFrame(numpy.random.randn(5, 3), columns=list('ABC'))

In [16]: df
Out[16]:
          A         B         C
0 -0.074172 -0.090626  0.038272
1 -0.128545  0.762088 -0.714816
2  0.201498 -0.734963  0.558397
3  1.563307 -1.186415  0.848246
4  0.205171  0.962514  0.037709

In [17]: df.iat[0, 0]
Out[17]: -0.074171888537611502

In [18]: df.at[0, 'A']
Out[18]: -0.074171888537611502

原文由 Jeff 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题