[英]pandas dataframe: Selecting rows by variable of floating point range
[英]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.