在访问pandas数据框中的值时,我遇到了Python中一个非常奇怪的错误。
对于给定的行和特定的列,当我期望它们相同时,下面的两个代码行返回不同的值:
>> df[df.obsId == 107099]['length'].values[0]
101.720001220703
>> df[df.obsId == 107099].length.values[0]
101.64261358425581
我真的不明白为什么返回的长度值不同。括号访问和属性访问是否应该等效?我以为可能是浮动不精确的原因,但实际上差别很大。
另外,当我显示数据框时,可能值得一提的是,其对应值为101.720001,这似乎表明显示是使用第一种方法而不是第二种方法访问数据的。
有任何线索说明这种重要差异的原因是什么,如何避免这种差异以及可以信任的两种方法中的哪种?
非常感谢!
答案 0 :(得分:1)
由于评论的提示,我终于理解了这个问题。
我的数据类型实际上是一个地理数据框,并且地理数据框似乎具有.length
属性。因此,引用此.length
属性的属性符号而不是引用具有相同值的同名列!