python - 如何使用 pandas 子选择与 float dtype 相等的行
问题描述
我有以下数据集示例。
df_csv_y = pd.read_csv('y_factors.csv')
time value
0 736527.481944 27.20001
1 736527.482639 27.10001
2 736527.483333 27.10001
3 736527.484028 27.10001
4 736527.484722 27.10001
......
我使用下面的代码尝试了索引。
df_csv_y[df_csv_y.time== 736527.482639]
我对数据集中存在的值进行了索引,但结果如下。
Empty DataFrame
Columns: [time, value]
Index: []
当我检索一个整数时,我得到了结果,但我无法像上面数据集的时间列那样检索浮点数据。
我想知道如何解决这个问题。
解决方案
这里的问题是您的实际浮点值比显示的值具有更高的精度,您可以使用np.isclose
并将容差设置为比默认值更高的精度以选择足够接近的值:
In[165]:
df[np.isclose(df['time'],736527.482639, 0.0000000001)]
Out[165]:
time value
1 736527.482639 27.10001
您当前发布的示例数据有效,但您的真实数据具有更高的精度。您可以调整atol
参数以np.isclose
设置绝对容差。
另一个方面是,比较浮点值是否相等通常由于浮点精度而往往不起作用,因此在处理浮点值时最好使用类似的东西np.isclose
进行比较
推荐阅读
- javascript - JS - 在没有 for 或 while 循环的情况下重复操作 N 次?
- css - Flex Box:最大横向宽度
- gremlin - 如何在 Gremlin 中返回有意义的错误?
- java - 使用 getText() 和 getter/setter 方法在 Java GUI 项目中用户名和密码验证不起作用?
- javascript - 如何使用 CSS 将过渡应用到下一张幻灯片
- python - 如果该值为“真”或“假”,则无法更改数据框中的单个值
- c# - 如何发布具有多个项目的解决方案?
- docker - 创建 Docker 映像但 docker run 抛出错误:无法找到或加载主类 org.gradle.wrapper.GradleWrapperMain
- c# - C# Windows Service 使用 Foreach 循环的 CPU 使用率高,如何最小化 CPU 使用率?
- html - 如何通过双击 HTML 表格行导航到另一个页面?