按属性(点)与括号访问熊猫列值时出现奇怪的错误

时间:2019-11-27 11:06:01

标签: python pandas dataframe

在访问pandas数据框中的值时,我遇到了Python中一个非常奇怪的错误。

对于给定的行和特定的列,当我期望它们相同时,下面的两个代码行返回不同的值:

  1. >> df[df.obsId == 107099]['length'].values[0]
    101.720001220703
    
  2. >> df[df.obsId == 107099].length.values[0]
    101.64261358425581
    

我真的不明白为什么返回的长度值不同。括号访问和属性访问是否应该等效?我以为可能是浮动不精确的原因,但实际上差别很大。

另外,当我显示数据框时,可能值得一提的是,其对应值为101.720001,这似乎表明显示是使用第一种方法而不是第二种方法访问数据的。

screenshot

有任何线索说明这种重要差异的原因是什么,如何避免这种差异以及可以信任的两种方法中的哪种?

非常感谢!

1 个答案:

答案 0 :(得分:1)

由于评论的提示,我终于理解了这个问题。

我的数据类型实际上是一个地理数据框,并且地理数据框似乎具有.length属性。因此,引用此.length属性的属性符号而不是引用具有相同值的同名列!