如何理解并记忆DataFrame中的Axis参数

news2024/10/6 6:39:47

当我们遇到有axis参数的方法时,脑子里的第一反应应该是:这个方法一定是沿着某一方向进行某种“聚合”或者“过滤”操作。在此场景下,Axis参数就是用来设定操作方向的:是垂直方向还是水平方向?

在这里插入图片描述

axis=0: 一行一行推进(沿垂直方向“聚合”或“过滤”)

axis=0axis=index时,DataFrame会沿着“垂直方向”进行“迭代”,它的操作其实是作用到一到多个行上的,所以:

  • df.sum(axis=0) 是针对每一求和;
  • df.drop(index, axis=0) 是去掉某一数据;

这里就是考察我们对axis理解的地方了,同样是axis=0,sum是按求和,而drop就变成了删除的操作,这里的关键还是要结合操作本身和axis的轴线方向一起来看。sum: 求和操作,axis=0,沿垂直方向逐行推进,所以就是:对列求和。drop:删除操作,axis=0,沿垂直方向逐行推进,所以就是:按行删除。请看下面的示例代码:

import pandas as pd

df = pd.DataFrame([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]], columns=["col0", "col1", "col2", "col3"], index=["row0", "row1", "row2"])
print(df)
print("------------")
# 沿垂直方向推进,操作是求和,所以结果是:按列求和
print(df.sum(axis=0))
print("------------")
# 依然是沿垂直方向推进,操作是删除,所以一旦找到名为"row0"的label,则必定是一个行,所以结果将是:按行删除
print(df.drop("row0", axis=0))

程序输出:

      col0  col1  col2  col3
row0     1     1     1     1
row1     2     2     2     2
row2     3     3     3     3
------------
col0    6
col1    6
col2    6
col3    6
dtype: int64
------------
      col0  col1  col2  col3
row1     2     2     2     2
row2     3     3     3     3

注意,如果我们把drop操作写为:df.drop("row0", axis=1),运行时会报错:"['row0'] not found in axis",原因是:在水平方向上( axis=1)找不到label为row0的列!这也从侧面反映了:DataFrame总是如实地根据轴线方向进行数据的查找和过滤。

axis=1: 一列一列推进(沿水平方向“聚合”或“过滤”)

当axis=1或axis=columns时,DataFrame会沿着“水平方向”进行,它的操作其实是作用到一到多个列上的,所以:

  • df.sum(axis=1) 是针对每一求和;
  • df.drop(col_name, axis=1) 是去掉某一数据;

此处逻辑与前面相同,再次看一下示例代码:

import pandas as pd

df = pd.DataFrame([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]], columns=["col0", "col1", "col2", "col3"], index=["row0", "row1", "row2"])
print(df)
print("------------")
# 沿水平方向推进,操作是求和,所以结果是:按行求和
print(df.sum(axis=1))
print("------------")
# 依然是沿水平方向推进,操作是删除,所以一旦找到名为"col0"的label,则必定是一个列,所以结果将是:按列删除
print(df.drop("col0", axis=1))

程序输出:

      col0  col1  col2  col3
row0     1     1     1     1
row1     2     2     2     2
row2     3     3     3     3
------------
row0     4
row1     8
row2    12
dtype: int64
------------
      col1  col2  col3
row0     1     1     1
row1     2     2     2
row2     3     3     3

同样的,如果我们把drop操作写为:df.drop("col0", axis=0),运行时会报错:"['col0'] not found in axis"",原因是:在垂直方向上( axis=0)找不到label为col0的行!这也从侧面反映了:DataFrame总是如实地根据轴线方向进行数据的查找和过滤。

最后,再次提醒:一般有axis参数的方法,往往都是要沿着某一方向进行“聚合”或者“过滤”操作!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/124192.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【微服务架构实战】第1篇之API网关概述

1.网关概述 采用分布式、微服务的架构模式开发系统时,API 网关是整个系统中必不可少的一环。 1.1 没有网关会有什么问题? 在微服务架构模式下,1个系统会被拆分成多个微服务,如果每个微服务都直接暴露给调用方,会有以…

MySQL主键和唯一键的区别

主键和唯一键基本知识参考这篇文章 MySQL表的约束 ,本篇文章主要是谈一谈主键和唯一键的区别从而更好的理解唯一键和主键。 在上篇文章中已经提到 主键: primary key 用来唯一的约束该字段里面的数据,不能重复,不能为空&#x…

vue父页面调用子页面及方法及传参,鼠标光标定位

项目场景: vue父页面调用子页面及方法 问题描述 vue中父界面调用子界面及方法时界面可以调用,但是调用方法的时候第一次报错,但是关掉界面再次重新打开就没问题了 原因分析: 在我之前添加鼠标指针定位的时候,如果在…

记录scoped属性的使用和引发的问题

背景 在对表格数据进行样式处理时,通过业务逻辑判断,进行对符合要求的表格填充背景色,没有符合预期的效果。反复排查校验代码和判断逻辑,都没有什么问题,可能还是样式上出现问题。再通过F12 选取元素对表格设置背景色时…

获取树形结构中,父节点下所有子/孙节点(递归方式)

获取树形结构中,父节点下所有子/孙节点(递归方式)1 树形结构(TreeItem类)2 测试代码(main函数)3 运行效果1 树形结构(TreeItem类) 这里通用型树形结构为TreeItem类&…

初学Java web(七)RequestResponse

Request&Response Request:获取请求数据 Response:设置响应数据 一.Request对象 1.Request继承体系 Tomcat需要解析请求数据,封装为requestx对象并且创建requestx对象传递到service方法中 使用request对象,查阅JavaEE API文档的HttpServletReque…

rocketMq架构原理精华分析(一)

rocketMq架构原理精华分析是我们这篇文章的核心,从消息中间件的对比、架构模型、消息模型、常见问题等逐一分析: 一、中间件对比: RabbitMq 集群效果不太好,底层不是java 语言,研究原理比较困难; Kafka是…

前端面试题之计算机网络篇 OSI七层网络参考模型

互联网数据传输原理 |OSI七层网络参考模型 OSI七层网络参考模型 应用层:产生网络流量的程序表示层:传输之前是否进行加密或者压缩处理会话层:查看会话,查木马 netstat-n传输层:可靠传输、流量控制、不可…

亿级流量的互联网项目如何快速构建?手把手教你构建思路

一. 大流量的互联网项目 1.项目背景 索尔老师之前负责的一个项目,业务背景是这样的。城市的基础设施建设是每个城市和地区都会涉及到的,如何在基建工地中实现人性化管理,是当前项目的主要诉求。该项目要实现如下目标: 工地工人的…

C语言实现http下载器(附代码)

C语言实现http的下载器。 例:做OTA升级功能时,我们能直接拿到的往往只是升级包的链接,需要我们自己去下载,这时候就需要用到http下载器。 这里分享一个: 功能: 1、支持chunked方式传输的下载 2、被重定…

Apollo开放平台8.0发布:多维升级“为开发者而生”

Apollo开放平台8.0重磅发布:多维升级“为开发者而生” Apollo开放平台迎来8.0版本,百度自动驾驶开放平台迈向易用性时代 百度Apollo EDU计划进展公布:已覆盖自动驾驶技术人才33.5万、700多所院校 Apollo Studio学习实践社区上线,新…

剑指offer----C语言版----第一天

目录 1. 数组中重复的数字Ⅰ 1.1 题目描述 1.2 思路一 1.3 思路二 1.4 思路三(最优解) 1. 数组中重复的数字Ⅰ 原题:剑指 Offer 03. 数组中重复的数字 - 力扣(LeetCode)https://leetcode.cn/problems/shu-zu-zhong-…

Python语言快速入门上

目录 1、前言 2、变量和常量 1)Python对象模型 2)Python变量 二、运算符和表达式 【运算符和表达式】 【位运算符】 【逻辑运算符】 【成员运算符】 【身份运算符】 【常用内置函数】 【基本输入输出】 【模块导入与使用】 【Python代码编…

【PCB专题】Allegro导出3D文件

在PCB布局时,已经决定了大部分器件要放置的位置。如接口、主要的芯片、模块等。因为放置好器件后可能与结构干涉,如果没有发现,那么不得不在Layout的后期调整器件位置,增加工作量。所以前期布局基本确定后就需要导出3D文件给结构工程师,由他查看是否有器件与结构、螺丝孔等…

全志Tina Linux Display 开发指南支持百问网T113 D1-H哪吒DongshanPI-D1s V853-Pro等开发板

1 概述 让显示应用开发人员了解显示驱动的接口及使用流程,快速上手,进行开发;让新人接手工作时能快速地了解驱动接口,进行调试排查问题。sunxi 平台DE1.0/DE2.0。与显示相关的应用开发人员,及与显示相关的其他模块的开…

操作系统期末考试必会题库1——引言+用户界面

1.请简要描述操作系统的定义及其功能。 操作系统定义: 是计算机系统中的一个系统软件,是一些程序模块的集合 ,它们管理和控制计算机系统中的软硬件资源,合理的组织计算机的工作流程,以便有效的利用这些资源为用户提供一…

Linux用户权限详解

为什么有人冲了钱就能享受至尊VIP待遇?为什么冲了黄钻、绿钻、紫钻就会享受一些特殊活动呢?我们起初都是一群普通用户,为什么有些人就能通过某些手段得到一些异于常人的服务呢?这其中的奥秘是什么呢?接下来带大家了解这…

【Vue】course_1

一、vue简介 Vue是一款用于构建用户界面的 JavaScript 框架。 它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。 无论是简单还是复杂的界面,Vue 都可以胜任。 二、vue3选项式…

ASEMI肖特基二极管MBR30100CT和MBR40200PT有什么区别

编辑-Z 别看ASEMI肖特基二极管MBR30100CT和MBR40200PT两种型号从名字上看很像,其实他们的参数和封装都是不一样的,具体MBR30100CT和MBR40200PT有什么区别呢? 肖特基二极管MBR30100CT参数: 型号:MBR30100CT 封装&…

[开源工具]使用Fiddler/Postman简单计算QPS[新手开箱可用]

使用Fiddler/Postman简单计算QPS1.什么是QPS?2.怎么计算QPS?3.如何使用Fiddler/Postman得到一个API接口的QPS?3.1Fiddler使用3.2Postman使用4.如何得到本机的核心数?5.根据公式计算QPS?6.扩展计算单机可支撑PV(理论值)?1.什么是QPS? qps即每秒查询率,是对一…