当前位置: 首页 > news >正文

pandas删除值全部为0的整行和整列,还有0.0,0.000000也要删除

Pandas 中,如果需要删除全部为 0 的行或列,可以通过 .all() 方法来判断行或列是否所有元素都为 0,然后删除这些行或列。


代码示例

示例数据:
import pandas as pd# 示例数据
data = {'A': [0, 2, 0, 4],'B': [0, 0, 0, 0],'C': [0, 10, 11, 12]
}
df = pd.DataFrame(data)print("原始数据:")
print(df)

输出:

   A  B   C
0  0  0   0
1  2  0  10
2  0  0  11
3  4  0  12

1. 删除全部为 0 的行

使用 .all(axis=1) 判断行是否所有值都为 0,然后通过布尔索引删除这些行。

# 删除全为 0 的行
df_cleaned = df.loc[~(df == 0).all(axis=1)]print("\n删除全为 0 的行:")
print(df_cleaned)
输出:
删除全为 0 的行:A  B   C
1  2  0  10
2  0  0  11
3  4  0  12

2. 删除全部为 0 的列

使用 .all(axis=0) 判断列是否所有值都为 0,然后通过布尔索引删除这些列。

# 删除全为 0 的列
df_cleaned = df.loc[:, ~(df == 0).all(axis=0)]print("\n删除全为 0 的列:")
print(df_cleaned)
输出:
删除全为 0 的列:A   C
0  0   0
1  2  10
2  0  11
3  4  12

3. 同时删除全部为 0 的行和列

可以结合以上两个方法,先删除全部为 0 的行,再删除全部为 0 的列。

# 删除全为 0 的行
df = df.loc[~(df == 0).all(axis=1)]# 删除全为 0 的列
df_cleaned = df.loc[:, ~(df == 0).all(axis=0)]print("\n删除全为 0 的行和列:")
print(df_cleaned)
输出:
删除全为 0 的行和列:A   C
1  2  10
2  0  11
3  4  12

参数解释

  • (df == 0).all(axis=1):
    • axis=1 表示按行判断,检查每一行是否全为 0
    • 返回一个布尔数组,用于判断哪些行满足条件。
  • (df == 0).all(axis=0):
    • axis=0 表示按列判断,检查每一列是否全为 0
    • 返回一个布尔数组,用于判断哪些列满足条件。

扩展:原地删除(inplace=True

如果希望直接修改原 DataFrame 而不返回新的对象,可以结合 inplace=True 选项。

示例:
# 删除全为 0 的行
df.drop(index=df[(df == 0).all(axis=1)].index, inplace=True)# 删除全为 0 的列
df.drop(columns=df.columns[(df == 0).all(axis=0)], inplace=True)print("\n原地删除全为 0 的行和列:")
print(df)

总结

操作示例代码
删除全为 0 的行df.loc[~(df == 0).all(axis=1)]
删除全为 0 的列df.loc[:, ~(df == 0).all(axis=0)]
同时删除全为 0 的行和列结合上述两条代码

打印删除了哪些行和列

要打印出被删除的行和列,可以在删除操作之前获取需要删除的行或列的索引,并在删除后将这些行或列打印出来。


方法:打印删除的行和列

以下是删除全为 0 的行或列并打印它们的完整代码示例。

示例代码
import pandas as pd# 示例数据
data = {'A': [0, 2, 0, 4],'B': [0, 0, 0, 0],'C': [0, 10, 11, 12]
}
df = pd.DataFrame(data)print("原始数据:")
print(df)# 找到需要删除的行和列
rows_to_delete = df.index[(df == 0).all(axis=1)].tolist()  # 行索引
cols_to_delete = df.columns[(df == 0).all(axis=0)].tolist()  # 列名称# 删除这些行和列
df_cleaned = df.drop(index=rows_to_delete, columns=cols_to_delete)# 打印删除的行和列
print("\n删除的行索引:", rows_to_delete)
print("删除的列名称:", cols_to_delete)# 打印删除后的 DataFrame
print("\n删除后的数据:")
print(df_cleaned)

代码解释

  1. 找到需要删除的行和列

    • rows_to_delete = df.index[(df == 0).all(axis=1)]
      • df == 0:生成一个布尔矩阵,表示每个值是否为 0。
      • .all(axis=1):检查每一行是否全为 0。
      • df.index[...]:返回需要删除的行的索引。
    • cols_to_delete = df.columns[(df == 0).all(axis=0)]
      • .all(axis=0):检查每一列是否全为 0。
      • df.columns[...]:返回需要删除的列的名称。
  2. 删除这些行和列

    • 使用 drop() 方法同时删除行和列。
  3. 打印删除的行和列

    • rows_to_deletecols_to_delete 保存了被删除的行和列的索引和名称,可以直接打印。
  4. 打印删除后的 DataFrame

    • 检查最终清理后的数据。

输出示例

原始数据:
   A  B   C
0  0  0   0
1  2  0  10
2  0  0  11
3  4  0  12
输出:
删除的行索引: [0]
删除的列名称: ['B']删除后的数据:A   C
1  2.0  10
2  0.0  11
3  4.0  12

扩展:原地删除并打印

如果需要直接在原始 DataFrame 中删除,同时打印出被删除的行和列:

# 找到需要删除的行和列
rows_to_delete = df.index[(df == 0).all(axis=1)].tolist()
cols_to_delete = df.columns[(df == 0).all(axis=0)].tolist()# 打印即将删除的行和列
print("\n即将删除的行索引:", rows_to_delete)
print("即将删除的列名称:", cols_to_delete)# 原地删除
df.drop(index=rows_to_delete, columns=cols_to_delete, inplace=True)# 打印最终结果
print("\n删除后的数据:")
print(df)

总结

操作示例代码
找到需要删除的行索引rows_to_delete = df.index[(df == 0).all(axis=1)].tolist()
找到需要删除的列名称cols_to_delete = df.columns[(df == 0).all(axis=0)].tolist()
打印删除的行和列print("删除的行索引:", rows_to_delete)print("删除的列名称:", cols_to_delete)
删除行和列df.drop(index=rows_to_delete, columns=cols_to_delete)

相关文章:

pandas删除值全部为0的整行和整列,还有0.0,0.000000也要删除

在 Pandas 中,如果需要删除全部为 0 的行或列,可以通过 .all() 方法来判断行或列是否所有元素都为 0,然后删除这些行或列。 代码示例 示例数据: import pandas as pd# 示例数据 data {A: [0, 2, 0, 4],B: [0, 0, 0, 0],C: [0, …...

IO Virtualization with Virtio.part 1 [十二]

久等了各位! 本篇开始讲解 IO 虚拟化中的 virtio,我会以 Linux 的 IIC 驱动为例,从 IIC 驱动的非虚拟化实现,到 IIC 驱动的半虚拟化实现,再到最后 X-Hyper 中如何通过 virtio 来实现前后端联系,一步步把 v…...

ShardingSphere-Proxy分表场景:go测试案例

接续上篇文章《ShardingSphere-Proxy分表场景测试案例》 go测试用例: package mainimport ("fmt""math/rand""time""github.com/bwmarrin/snowflake""gorm.io/driver/mysql""gorm.io/gorm""gor…...

OpenStack系列第四篇:云平台基础功能与操作(Dashboard)

文章目录 1. 镜像(Image)添加镜像查看镜像删除镜像 2. 卷(Volume)创建卷查看卷删除卷 3. 网络(虚拟网络)创建网络查看网络删除网络 4. 实例类型创建实例类型查看实例类型删除实例类型 4. 密钥对&#xff08…...

ESP32 I2S音频总线学习笔记(一):初识I2S通信与配置基础

文章目录 简介为什么需要I2S?关于音频信号采样率分辨率音频声道 怎样使用I2S传输音频?位时钟BCLK字时钟WS串行数据SD I2S传输模型I2S通信格式I2S格式左对齐格式右对齐格式 i2s基本配置i2s 底层API加载I2S驱动设置I2S使用的引脚I2S读取数据I2S发送数据卸载…...

25上半年软考高级系统分析师易混淆知识点

第1章 系统工程与信息系统基础 易混淆点1:系统工程生命周期与信息系统的生命周期 1、系统工程生命周期阶段 探索性研究→概念阶段→开发阶段→生产阶段→使用阶段→保障阶段→退役阶段 2、信息系统的生命周期 产生阶段→开发阶段(单个系统开发&…...

采集JSON解析错误的修复

两段采集来的JSON格式: 一: {"hwgOnlineId":"554312", "jiwuChatId":"", "phoneCategoryId":"20006", "cuxiaoSeq":{voucherTitle:1,lh 二: {"pic":&q…...

Java中实现对象的深拷贝(Deep Copy)

在Java中实现对象的深拷贝(Deep Copy)意味着创建一个对象的副本,使得原对象和副本对象完全分离,对副本对象的任何修改都不会影响到原对象。以下是几种实现深拷贝的方法: 1. 手动实现深拷贝 对于自定义类,…...

位置编码-APE

Transformer 中的绝对位置编码 (以下由gpt 生成) Transformer 的绝对位置编码(Absolute Position Encoding, APE)是用于对序列数据中的位置信息进行建模的一种方法。在 Transformer 的架构中,输入数据(如句…...

MySQL有哪些锁?

1.MySQL有哪些锁? 全局锁表级锁 表锁元数据锁意向锁 行级锁 记录锁间隙锁临键锁临时意向锁 我了解的是MySQL的锁可以分为全局锁、表级锁、行级锁。 我比较熟悉的是表级锁和行级锁,如果我们对表结构进行修改时,MySQL就会对这个表结构加一个…...

Everything实现,快速搜索文件

最近编写NTFS文件实时搜索工具, 类似 Everything 这样, 翻阅了很多博客, 结果大致如下: 1.分析比较肤浅, 采用USN日志枚举来获取文件记录 速度一言难尽, 因为日志枚举的是全盘所有文件的所有日志, 记录比文件记录还多, 速度当然很慢, 还有的甚至于是 使用 DeviceIoControl 函数…...

[硬件] DELL BIOS 相关注意事项

前言 前段时间重装系统. DELL BIOS属实资料少, 又难用. 这里给出相关的注意事项, 并且配上图片. BIOS相关注意事项 进入BIOS ESC/F2/ F12. 都可以进入BIOS, 当进U盘的入Win PE系统时, 使用F12 效果更佳. 关闭安全模式 切换到Boot Configuration选项,将Secure Boot选项off选…...

Rocky Linux 下安装Liboffice

Rocky Linux下安装Liboffice。 Step1: 在桌面,单击击键盘的Window键,点击出现的白色software按钮图标; Step2: 输入lib,即可自动跳出libre Office, 进行安装; Step3: Have fun with Rocky Linux....

【每日学点鸿蒙知识】长时任务、HarmonyAppProvision申请、preferences、Testing工具、应用保活

1、HarmonyOS 如何解决语音聊天、通信app退后台系统采集播放回调就会停止,回前台未恢复? 关于应用切到后台系统采集播放回调停止的问题原因如下:为了降低设备耗电速度、保障用户使用流畅度,系统会对退至后台的应用进行管控&#…...

步进电机驱动算法——S形加减速算法原理

1. 前言: 最近项目又用到了步进电机,为了在运动中加减速更加平稳决定研究一下S型加减速,原来用过野火的s型加减速程序,云里雾里的移植成功了,今天再翻来程序看一脸懵逼,重新学习了一下发现所有公式都能看懂…...

【图像去噪】论文复现:大道至简!ZS-N2N的Pytorch源码复现,跑通源码,获得指标计算结果,补充保存去噪结果图像代码,代码实现与论文理论对应!

请先看【专栏介绍文章】:【图像去噪(Image Denoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总(更新中) 完整代码和训练好的模型权重文件下载链接见本文底…...

2024年中国新能源汽车用车发展怎么样 PaperGPT(一)

概述 在国家政策的强力扶持下,2024年中国新能源汽车市场迎来了新的发展机遇。本文将基于《中国新能源汽车用车报告(2024年)》的数据,对新能源汽车的市场发展和用车趋势概述。 新能源汽车市场发展 政策推动:国家和地…...

数据结构-排序思想

直接插入排序 将后面的无序区中的元素挨个向前面的有序区中插入。 1.将顺序表中R[0]用作哨兵,按索引i2...n的次序,将R[i]向有序区R[1...i-1]中执行插入操作。 2.插入操作可采取在有序区中从后向前的查找比较和移动的方法。 3.此操作中比较的次数与原序列…...

python 快速排序(Quick Sort)

快速排序(Quick Sort) 快速排序是一种高效的排序算法,采用分治法(Divide and Conquer)策略。它的基本思想是:选择一个基准元素(pivot),将数组分为两部分,使得…...

MySQL数据库——常见慢查询优化方式

本文详细介绍MySQL的慢查询相关概念,分析步骤及其优化方案等。 文章目录 什么是慢查询日志?慢查询日志的相关参数如何启用慢查询日志?方式一:修改配置文件方式二:通过命令动态启用 分析慢查询日志方式一:直…...

使用Taotoken后如何通过用量看板清晰掌握各模型API消耗情况

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken后如何通过用量看板清晰掌握各模型API消耗情况 当你将多个大模型API的调用统一接入到Taotoken平台后,一个…...

Unity3D RPG游戏开发实战:从零搭建角色与场景交互系统(含源码)

1. Unity3D RPG游戏开发基础准备 第一次打开Unity3D时,很多人会被复杂的界面吓到。别担心,我们先从最基础的设置开始。我建议使用2021 LTS版本,这个版本稳定性好,社区支持也完善。安装完成后,记得在Hub里勾选"Wi…...

你的动漫图片为什么总是不够清晰?3个步骤让AI帮你还原4K级画质

你的动漫图片为什么总是不够清晰?3个步骤让AI帮你还原4K级画质 【免费下载链接】Real-ESRGAN Real-ESRGAN aims at developing Practical Algorithms for General Image/Video Restoration. 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN 想象一…...

从74LS00与非门到74LS86异或门:手把手教你用面包板搭建数字电路基础实验(附波形分析)

从74LS00与非门到74LS86异或门:面包板上的数字电路实战指南 在电子技术的浩瀚海洋中,数字电路犹如一座连接现实与虚拟的桥梁。对于初学者而言,从理论到实践的跨越往往充满挑战——实验室里昂贵的设备、复杂的接线、固定的实验流程&#xff0c…...

手把手教你用VAMI 5480界面给vCenter Server 7.0打补丁(附备份确认与CEIP选择避坑)

从零开始:vCenter Server 7.0小版本升级全流程指南 第一次为vCenter Server执行小版本升级,就像给心脏做手术——既不能出错,又必须确保每一步都万无一失。作为VMware虚拟化环境的核心枢纽,vCenter的稳定性直接关系到整个IT基础设…...

如何选择一款既能过查重又能过AI检测的降重软件?(知网、维普、万方、格子达等)经验分享

毕业季与投稿季,论文查重率飙升、AIGC 疑似率居高不下,是无数人的噩梦。2026 年,国内超 82% 高校已实施 “查重率 AIGC 率” 双控标准,知网、维普、万方、格子达等平台算法全面升级,传统同义词替换早已失效。想要高效…...

你的滤波器为什么‘跑偏’了?深入理解幅频特性中的通带波纹与阻带衰减

你的滤波器为什么‘跑偏’了?深入理解幅频特性中的通带波纹与阻带衰减 当你在示波器上看到精心设计的滤波器输出波形出现意料之外的畸变时,是否曾怀疑过自己的数学推导?那些在仿真软件中完美运行的参数,为何在实际电路中总会出现微…...

IDM激活脚本终极指南:如何免费锁定30天试用期无限使用

IDM激活脚本终极指南:如何免费锁定30天试用期无限使用 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script IDM Activation Script是一款开源工具&#xf…...

YOLACT实战:在Windows 10/11上用RTX 3060显卡跑通实例分割(含CUDA 11.7配置)

YOLACT实战:在Windows 10/11上用RTX 3060显卡跑通实例分割(含CUDA 11.7配置) 当RTX 3060遇上实例分割,如何在Windows平台上避开那些深坑?去年用YOLACT完成工业质检项目时,发现大多数教程都假设用户使用Linu…...

温柔沟通术,稳住实习候选人的心w

为什么高冷的企业在校招中容易丢分? 在金融与科技企业的校招抢人大战中,HR常发现一个现象:有些各方面条件都极佳的应届生,在面试流程过半时突然“消失”了。深究其原因,往往不是因为薪资或岗位本身,而是因…...