当前位置: 首页 > 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的慢查询相关概念,分析步骤及其优化方案等。 文章目录 什么是慢查询日志?慢查询日志的相关参数如何启用慢查询日志?方式一:修改配置文件方式二:通过命令动态启用 分析慢查询日志方式一:直…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

数据库分批入库

今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Android15默认授权浮窗权限

我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...

门静脉高压——表现

一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...

Element-Plus:popconfirm与tooltip一起使用不生效?

你们好&#xff0c;我是金金金。 场景 我正在使用Element-plus组件库当中的el-popconfirm和el-tooltip&#xff0c;产品要求是两个需要结合一起使用&#xff0c;也就是鼠标悬浮上去有提示文字&#xff0c;并且点击之后需要出现气泡确认框 代码 <el-popconfirm title"是…...