Python-Pandas:列保留两位小数并删除多列和为0的行
Pandas 处理方案:四舍五入+删除全零行
完整代码实现
import pandas as pd # 构造示例DataFrame data = { 'Premium': [0.0000, 5.0000, 0.0000, 1.0000], 'Comission': [0.0000, 3.0000, 0.0000, 3.0000], 'RVNE': [0.0000, 0.0000, 5.0000, 0.0000], 'Incurred': [0.0017, 1.0000, 2.0000, 0.0000] } df = pd.DataFrame(data) # 链式操作:先四舍五入到2位小数,再筛选行(四列和不为0) processed_df = df.round(2).loc[lambda x: x.sum(axis=1) != 0] print(processed_df)
输出结果
Premium Comission RVNE Incurred 1 5.0 3.0 0.0 1.0 2 0.0 0.0 5.0 2.0 3 1.0 3.0 0.0 0.0
为什么这是最优高效的方法?
- 向量化运算:
round()和sum(axis=1)都是Pandas内置的向量化方法,底层基于NumPy实现,比手动逐行循环快几个数量级,尤其适合大数据量场景。 - 链式调用:无需创建中间变量,一步完成全部处理,代码简洁且内存效率更高。
- 精准匹配需求:先执行四舍五入,再基于处理后的列求和筛选,完全符合「删除四舍五入后四列之和为0的行」的逻辑。
内容的提问来源于stack exchange,提问作者cimino_cimi
相关产品推荐
相关产品推荐

