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

时间:2016-02-13 05:44:24

标签: python pandas

我将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?或者是熊猫中更直接的解决方案?

1 个答案:

答案 0 :(得分:3)

是的,你可以使用numpy的isclose

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