Python/Pandas如何筛选小数部分大于0.00的数值?
Pandas筛选小数部分非零数值的实现方法
你可以通过Pandas向量化的取模运算实现需求,该方案全程基于Pandas底层优化的运算逻辑,无需遍历行,完全适配大体积DataFrame的性能要求:
基础实现代码
import pandas as pd # 示例DataFrame df = pd.DataFrame({ 'Lineitem price': [4.00, 5.65, 1.22, 8.00, 10.78, 7.00, 2.85] }) # 筛选小数部分非零的行 filtered_df = df[df['Lineitem price'] % 1 > 0]
运行后得到的filtered_df结果如下:
Lineitem price 1 5.65 2 1.22 4 10.78 6 2.85
浮点数精度优化方案
如果你的数据存在浮点数精度误差问题(例如整数数值因计算误差出现1.0000000000000002、3.999999999999999这类情况),可以增加极小阈值判断,避免误筛:
# 设置1e-9为误差容忍阈值,仅保留小数部分大于该阈值的数值 filtered_df = df[df['Lineitem price'] % 1 > 1e-9]
常用衍生操作
如果不需要过滤行,仅需要将整数数值替换为缺失值/自定义值,可以用where方法实现:
# 整数位置替换为NaN df['Lineitem price'] = df['Lineitem price'].where(df['Lineitem price'] % 1 > 1e-9)
内容的提问来源于stack exchange,提问作者BernardoF
相关产品推荐
相关产品推荐

