繁体   English   中英

在pandas中的浮点列中按值选择行

[英]Selecting rows by value in a floating point column in pandas

我使用pd.read_csv将csv数据文件导入到pandas DataFrame df 文本文件包含一个包含以下字符串的列:

y
0.001
0.0003
0.0001
3e-05
1e-05
1e-06

如果我打印DataFrame,pandas会在逗号后面输出6位数的这些值的十进制表示,一切看起来都不错。

当我尝试用值来选择行,就像这里

df[df['y'] == value],

通过键入值的相应十进制表示,pandas正确匹配某些值(例如:行0,2,4)但与其他值(行1,3,5) 匹配。 这当然是由于这些行值在基数2中没有完美的表示。

我能够通过这种方式解决这个问题:

df[abs(df['y']/value-1) <= 0.0001]

但似乎有点尴尬。 我想知道的是:numpy已经有一个方法, .isclose ,专门用于此目的。

有没有办法在这样的情况下使用.isclose 或者更直接的熊猫解决方案?

是的,你可以使用numpy的isclose

df[np.isclose(df['y'], value)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM