访问pandas列值时出现奇怪的错误(点)与b不同

2024-06-28 10:53:11 发布

您现在位置:Python中文网/ 问答频道 /正文

在访问数据帧中的值时,Python中出现了一个非常奇怪的错误

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

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

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

另外,当我显示dataframe时,相应的值是101.720001,这似乎表明显示器使用第一种方法而不是第二种方法访问数据,这可能是有用的:

screenshot

有什么线索可以说明造成如此重要差异的原因,如何避免,以及这两种方法中哪一种值得信任

非常感谢


Tags: 数据方法代码dataframedf属性错误原因
1条回答
网友
1楼 · 发布于 2024-06-28 10:53:11

多亏了这些评论的暗示,我终于明白了这个问题

我的数据类型实际上是一个geodataframe,geodataframes似乎有一个.length属性。因此,属性表示法引用了这个.length属性,而不是引用了同名的列,这些列恰好有不同的值

相关问题 更多 >