我将csv数据文件导入到带有df
的pandas DataFrame pd.read_csv
中。文本文件包含一个包含以下字符串的列:
y
0.001
0.0003
0.0001
3e-05
1e-05
1e-06
如果我打印DataFrame,pandas会在逗号后面输出6位数的这些值的十进制表示,一切看起来都不错。
当我尝试按值选择行时,例如here:
df[df['y'] == value],
通过键入相应的十进制值表示,pandas正确匹配某些值(例如:行0,2,4),但不匹配其他值(行1,3,5)。这当然是由于这些行值在基数2中没有完美的表示。
我能够以这种方式解决这个问题:
df[abs(df['y']/value-1) <= 0.0001]
但似乎有点尴尬。我想知道的是:numpy已经有一个方法.isclose,专门用于此目的。
在这样的情况下,有没有办法使用.isclose
?或者是熊猫中更直接的解决方案?
答案 0 :(得分:3)
是的,你可以使用numpy的isclose
df[np.isclose(df['y'], value)]