python DataFrame中对行、列处理顺序的细节解析,经常搞混的可不要错过啦

Pandas数据分析入门:掌握Series、DataFrame与数据清洗全流程 数据分析工作中,表格数据是最常见的处理对象。面对Excel或CSV中的大量记录,如何高效整理与清洗,是每个数据分析师都要解决的基础问题。Pandas作为Python生态中最常用的结构化数据处理库,通过DataFrame和Series两个核心数据结构,把表格操作转化为可复用、可复现的代码流程。它基于NumPy构建,支持向量化计算,能快速完成数据读取、筛选、去重、排序、分组聚合等任务,比纯Python循环更高效,也比手工操作Excel更适合自动化处理。从CSV/Excel读取、缺失值与重复值处理、数据类型转换, 阅读详情

python中处理和分析数据几乎离不开pandas包中的DataFrame,而其中的有些用法我一直很容易弄混,主要是对行和列的处理的顺序,以及axis处理方向的理解。因此现在写下此文,以加深自己的记忆,也希望能帮助到有需要的人。

在这里插入图片描述


行与列

取列、取行、取值

首先是较简单的取值,取值这里可以分为取列,取行,以及取某些区域或者某特定位置的值,直接通过简单的例子进行介绍吧,由于本文主要是区分列和行处理时容易混淆的地方,所以很多具体的方法我就不多赘述了。

>>> import numpy as np
>>> import pandas as pd
>>> data = pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz'))
>>> data
    w   x   y   z
a   0   1   2   3
b   4   5   6   7
c   8   9  10  11
d  12  13  14  15
# 取列
>>> data['x']
>>> data.x
>>> data[['x','z']]
>>> data.loc[:,'x']
>>> data.iloc[:,1]
>>> data.iloc[:,1:2]
>>> data.iloc[:,1:3]
>>> data.loc[:,'x':'z']
# 取行
>>> data[0:2]  # data[0]会报错,会默认认为是列
>>> data['a':'c'] # data['a']会报错,会默认认为是列
>>> data.loc['a']
>>> data.iloc[2]
>>> data.iloc[1:3]
>>> data.loc['b':'d']
# 取值
>>> data.loc['d','y']
>>> data.iat[2,3]
>>> data.loc['c',['y','z']]

取列、取行、取值的方法大致有上述这一些,可以看出取列的方法较多,取的时候较简单,直接表名后跟列名即可,这也符合我们的日常习惯(经常需要对列进行处理)。

在需要取行时就相对麻烦一点,不能直接使用表名加要取的某一行,而是必须使用冒号进行对行的切片才表明是对行处理(也就是不能使用data[‘x’:‘z’]取列,而只能取行),否则只能使用.loc或者.iloc这种函数来帮助了。

在使用.loc,.iloc这样的定位方法时,就需要将要取列的列名或列的索引(不要和表的索引搞混了)放在方括号中逗号的后面,前面则是用来放所需取用的行索引的(如果为:表示取所有行)。

OK,总结一圈后,告诉了我们一个结论就是pandas DataFrame在获取一个二元列表如[‘m’,‘n’]时,是先将第一位当做行,第二位当做列的。其它情况下若是直接输入想处理的列名(如data[‘x’])则表示处理列,还有其它的类似的情况我就不多赘述了。之后希望不要再搞混这些情况啦!

axis

首先,是DataFrame中的行与列的确定,在DataFrame中默认是先处理行再处理列的,因此默认的axis=0表示为对行的处理,但是要注意的是这里的对行处理并不是对每一行进行一次操作,我们看个例子:

# 以下含有>>>符号表示是输入的命令,其余的是输出
>>> import numpy as np
>>> import pandas as pd
>>> data = pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('wxyz'))
>>> data  # data本身
    w   x   y   z
a   0   1   2   3
b   4   5   6   7
c   8   9  10  11
d  12  13  14  15
>>> data.sum() # 默认axis=0
w    24
x    28
y    32
z    36
dtype: int64
>>> data.sum(axis=1)    # 调到对列的处理
a     6
b    22
c    38
d    54
dtype: int64

从上面的两个结果来看,axis=0的情况下计算的是每一列的总和,而axis=1计算的是每一行的总和,因此我们能总结出,axis=0并不代表是对每一行进行处理,而是跨行进行数据处理,axis=1则是跨列进行数据处理。以后可要记清楚不要搞混啦!

numpy或者其它二维数组的“行”、“列”

其实理解本质的话就知道二维数组并不是实打实的行或列,因为它们实际上只是多项列表或者series的合并形式而已,但是我昨天就被这个搞混淆了一次,所以也要记录下来,希望之后不会再犯错。

由于numpy array和普通的array都差不多,我就不说两次啦,就写一种情况就好了。

>>> import numpy as np
>>> array = np.arange(25).reshape((5, 5))
>>> array
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19],
       [20, 21, 22, 23, 24]])

其实就是列表的嵌套嘛,所以比如使用array[1]那就是先取到[ 5, 6, 7, 8, 9]这个列表呗,再加一个额外的下标,不就是在[ 5, 6, 7, 8, 9]这个列表里面取值吗,比如array[1][1]就是取[ 5, 6, 7, 8, 9]列表里面的第二个元素嘛,所以结果就是6呗。

如果和行列结合起来其实也是可以的,观察这个二维数组的排布,其实[ 5, 6, 7, 8, 9]就是第二行嘛,而6所在的位置也就是第二列而已,和DataFrame中的顺序一样,都是先找行,再找列。这样的话问题就完美解决啦,当然读者最好根据自己的情况看怎么去理解二维数组,最终就是不要搞混就行。

叮

自己还有很多不足的地方,但我也知道我会慢慢进步,反正加油就是啦!

Python解析BLF文件实战:cantools+python-can实现CAN总线数据解码与批量分析 CAN总线数据采集后,BLF二进制日志的解析与信号解码是工程实践中的关键环节。基于DBC数据库定义,通过Python生态中的cantools与python-can库,可实现从原始报文到物理值的完整解码链路,涵盖流式读取、多路复用信号处理、时间戳对齐及数据转换等核心操作。该方案适用于整车测试、ECU标定及售后数据分析等场景,支持批量处理与自动化回归,有效提升CAN总线数据预处理与下游分析的效率。 阅读详情

相关推荐

从numpy到pandas:量化项目实战的完整学习路径

数据分析的核心是处理与计算。在Python生态中,numpy提供高性能数组运算,pandas则构建于其上的DataFrame表格模型,两者是数据清洗、分组聚合、时间序列分析的基础。掌握它们的原理与配合方式,才能高效完成从数据读取到指标计算的完整流程。量化回测正是这一能力的典型应用场景:通过pandas处理行情数据,计算收益率、移动平均、生成交易信号并评估策略表现。本文梳理了一条从numpy切片思维、pandas核心操作到量化项目实践的落地方案,帮助初学者建立向量化处理意识,规避常见坑点,在实际工程中真正用好

weixin_34284188的博客 428

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

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

Laurence的技术博客 2124

Python免费抓取A股K线数据:东方财富+腾讯双接口实战

网络爬虫与HTTP接口是获取公开数据的重要手段,而股票行情数据则是量化分析与投资策略的基础。理解浏览器请求背后的原理,掌握用Python的requests库发送GET请求、解析JSON响应,再借助pandas将非结构化数据转化为DataFrame,是一种高效、低成本的数据采集思路。在实际工程中,免费数据源的选型与备份直接影响系统的稳定性,通过双通道交叉验证可以规避单一接口变动带来的风险。本文面向个人研究场景,从入门环境搭建到核心代码实现,详细演示了如何利用东方财富与腾讯的公开接口免费获取A股K线数据,覆盖环

weixin_33826609的博客 325

python怎样将dataframe中的两行交换顺序

在Python中可以使用以下方法来交换两行的顺序: 先将要交换的两行提取出来,单独存成两个新的变量。 删除原来的两行。 将两个新变量插入到想要交换到的位置即可。 下面是一个示例代码: import pandas as pd# 创建一个示例数据框 df = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}) print(df) # 提取第一行和第二行 row1 =...

weixin_42584586的博客 1200

Pandas数据分析速通:数据清洗、类型转换与高性能格式实战

数据分析是现代数据工程与商业决策的基础环节,而Python生态中的Pandas库凭借其高效、灵活的表结构处理能力,成为数据清洗与探索性分析的首选工具。它以Series和DataFrame为核心,将Excel式操作与自动化脚本能力结合,让数据读取、探查、清洗、聚合与导出形成完整闭环。在实际工作中,pandas数据类型转换是高频需求,比如将字符串日期转为时间类型、将object列转为数值列,这直接关系到后续计算的准确性;而drop_duplicates中的subset参数则能精准实现两列值相同取第一条数据的去重

weixin_30443731的博客 516

pandas自定义改变dataframe数据列的前后次序 (change the order of columns in dataframe)

pandas自定义改变dataframe数据列的前后次序 (change the order of columns in dataframe)

data+scenario+science+insight 510

【Python】DataFrame调整列(行)顺序

import pandas as pd df = pd.DataFrame([[1,2],[3,4]],columns=['a','b'],index=['c','d']) df[['b','a']] #换列 Out[12]: b a c 2 1 d 4 3 df.reindex(['d','c']) #换行 Out[13]: a b d 3 4 c 1 2 #注:此时df还是原来的df,因为交换的结果都没有输出, # 所以要记得输出结果。 ...

weixin_43897476的博客 8778

多元统计分析Python实战:从数据预处理到聚类判别的完整源码解析

多元统计分析是处理多变量数据的经典方法,通过降维、分类与解释结构,帮助研究者从复杂数据中提炼关键信息。其核心原理包括主成分分析提取主要变异、因子分析揭示潜在公共因子、聚类分析划分自然群体、判别分析验证分组合理性,这些方法在经济学、市场调研和科研领域应用广泛。数据分析实践中,数据预处理与标准化是保证结果可靠的前提,而合理选择算法参数直接影响模型解释力。本文聚焦于多元统计分析的工程落地,提供一套从Excel读取、数据清洗、标准化到主成分分析、因子分析、聚类分析和判别分析的可运行Python源码框架,并总结课程设

weixin_33991418的博客 473

python中pandas库中DataFrame对行和列的操作使用方法

这个repo 用来记录一些python技巧、书籍、学习链接等,欢迎star github地址 用pandas中的DataFrame时选取行或列: import numpy as np import pandas as pd from pandas import Sereis, DataFrame ser = Series(np.arange(3.)) data = DataFrame...

Great haste makes great waste 40万+

DeepSeek 与 Excel 结合:公式生成、VBA 脚本与 Python 批处理实战

在数据处理领域,Excel 公式、VBA 脚本和 Python 批处理是三种常见的自动化手段。公式适用于一次性计算,VBA 擅长重复性操作,而 Python 则能高效处理大批量文件。通过自然语言描述需求,DeepSeek 可以生成可执行的公式、VBA 代码或 Python 脚本,将繁琐的手工操作转化为自动化流程。这不仅降低了编程门槛,还显著提升了运营、财务和分析师的工作效率。应用场景包括跨表匹配、数据合并、条件标记等。本文聚焦 DeepSeek 与 Excel 的结合,详解三条落地路径及避坑指南。

weixin_34310369的博客 415

Excel VBA | 一键批量生成对账单

根据对账单总表一键批量生成N家独立的客户对账单。

Microgoblins的博客 6983

Python的ndarray和DataFrame访问元素操作总结

Numpy的二维数组(ndarray,或称矩阵)和DataFrame在数据访问方式上有许多相似之处,且有些地方容易让人搞混,因此做了简要总结。

cshy2013的博客 5977

Simulink模块库介绍(一)——信号源模块

Simulink模块库介绍(一)——信号源模块库目录Clock模块Digital Clock模块Band-Limited White Noise模块 目录 simulink模块库中提供了丰富的信号源模块组。逐一介绍,算是对之前做个总结吧 Clock模块 通过时钟模块,输出的时间作为判断呢,如下图,前2s之前为高斯白噪声,后2s为正弦曲线,共计10s。 Digital Clock模块 数字时钟模块主要用于离散系统的计时,sample time表示采用时间,如下图:分别是1s和0.5s的采样时间 Band-

5万+

python dataframe 查找数据总结

比如我们有个dataframe如下: 查找第一行 a.loc[0] a.iloc[0] 查找a列 a[‘a’] 查找指定行列的值 a[‘a’][0] a[‘a’].loc[0] a[‘a’].iloc[0] 说明 最好用loc和iloc,因为当dataframe排序后,a[‘a’][0]并不是排序后a列第一行的数据,而是a列,index为0的值 ...

RobbenEmi的专栏 7940

qt工程引入opencv库步骤

第一步:新建qt工程 第二步:在工程名.pro文件中添加opencv库的路径                   INCLUDEPATH += /home/liyuanzhe/opencv-2.4.8/include/opencv \ /home/liyuanzhe/opencv-2.4.8/include/opencv2 LIBS += /home/liyuanzhe/open

superyuanzhe的专栏 5722

BVH2SMPL 实战笔记

BVH2SMPL 实战笔记

jacke121的专栏 843

python 字典组成的列表 pandas_Pandas创建DataFrame:由列表与字典创建的差异

之前已经有分享如何使用Pandas创建DataFrame的五种方式如下,大家可以看看:郭小瑄:Pandas数据结构:5种Dataframe创建方式​zhuanlan.zhihu.com对我来说比较容易搞混的是第四和第五种方式,即:由字典组成的列表以及由字典组成的字典接下来我将分享以下的练习,是让我能比较清楚这两种创建DataFrame的方式。练习题目创建成下图的DataFrame。图中为:每位学生...

weixin_39659748的博客 440

高通Camx功能feature分析之一:remosaic功能导通

本文详细介绍了S5K3P9S传感器前置场景中SW Remosaic功能的实现流程。首先需在sensorxml中确认支持SW Remosaic类型,并集成remosaic相关库文件(libremosaic_wrapper.so等)。核心实现包括:初始化阶段调用InitFrontSamsungRemosaic();执行线程DeferFrontInitThread()读取校准数据;通过DoSamsungRemosaic()执行remosaic算法处理;最后在析构函数中调用DeinitFrontSamsungRem

1700

JupyterHub changelog 深度解读:从 0.1 到 6.x 的版本演进、破坏性变更与升级路径

本文以官方 [changelog](https://link.gitcode.com/i/3a12833c74dbc56b22212e7846fe892e) 为主线材料,结合仓库源码与升级文档,系统梳理 JupyterHub 从 0.1(2015-03)到 6.x(2026)的版本演进脉络。读完本文,你将掌握:EffVer 版本号语义与主版本 bump 的触发条件、6.0 的完整升级清单(含破坏性

gitblog_00038的博客 944

云原生之容器编排实践-在K8S集群中使用Registry2搭建私有镜像仓库

基于前面搭建的3节点 Kubernetes 集群,今天我们使用 Registry2 搭建私有镜像仓库,这在镜像安全性以及离线环境下运维等方面具有重要意义。作为测试环境,本次使用 Registry2 搭建了私有镜像仓库,实际生产环境建议使用 Harbor;创建了一个 local-storage 的 StorageClass ,并使用本地磁盘的方式创建使用 PV ,实际建议使用 NFS 。

Heartsuit的博客 2461

MATLAB从入门到精通-APP调用simulink中的参数,并且修改,将结果返回到APP中

本次案例为以下微分方程: 其中方程的初始值为: Step1:搭建simulink文件,如下图所示: 初始值配置在积分模块中,如下图所示: Step2:制作app 操作视频: ,时长01:11 代码: 本文包括APP如何回调simulik中d的参数,以及把simulink中的仿真结果输出到APP中的绘图界面中。 核心代码如下: ...

wenyusuran的专栏 3042

用Python pandas批量删除Excel空白行列的完整指南

数据处理中,Excel表格的空白行列是常见痛点,不仅影响版面整洁,更会干扰后续的数据分析与统计。掌握数据清洗的基本概念,理解空值判断的原理(如NaN、空字符串与None的区别),是高效处理表格的关键。基于pandas库的dropna方法,通过配置how、thresh、subset等参数,可精准识别并删除全空或部分空的行列,实现自动化清洗。该方案适用于多工作表、大批量Excel文件的场景,配合openpyxl还能在保留原格式的情况下操作数据。从基础的DataFrame操作到批量文件处理,本文提供可直接复用的P

weixin_33938733的博客 572

uniapp:实现APP获取陀螺仪数据、加速传感器、线性加速传感器,uniApp实时监听陀螺仪【XYZ】数据及停止监听与资源释放等功能示例源码,根据需求做功能(完美兼容Android安卓、苹果ios)

uniapp陀螺仪,uniapp加速传感器,uniapp线性加速传感器,APP陀螺仪数据,uniapp app 端获取陀螺仪数据示例代码,手机中获取陀螺仪的数据,uniApp实时获取陀螺仪xyz数据,android陀螺仪方向,获得陀螺仪传感器,处理传感器数据,停止监听与资源释放,Android使用陀螺仪,uniapp苹果ios陀螺仪,uni-app设备之(加速计,罗盘,陀螺仪)插件安卓/IOS APP提供了获取陀螺仪数据的能力,手机陀螺仪传感器获得手机自身旋转的角度,陀螺仪获取旋转角度,陀螺仪、加速度传感器

✅ 精选推荐文章 4266

PandaSQL:在pandas中直接用SQL查询DataFrame的实用指南

在数据处理工作中,SQL与pandas是两种常用的技术栈。SQL以声明式语法清晰表达过滤、关联与聚合,而pandas链式操作在逻辑复杂时容易造成可读性下降。PandaSQL基于SQLite引擎,允许将DataFrame注册为内存表,直接在Python环境中编写SQL查询,结果仍以DataFrame返回。这种结合既保留了SQL结构化表达的优势,又无缝衔接Python生态,适合多表关联、分组统计等中小规模数据分析场景。内容涵盖概念、原理与实战,帮助数据分析师高效处理DataFrame。

weixin_33158887的博客 225

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python嵌套列表转Excel表格并自动合并单元格实操指南

嵌套列表是Python中极为常见的数据组织形态,形如列表套列表,天然对应二维表格的行列结构。数据处理时,我们常需将其转换为Excel报表,并对相同分类的连续单元格进行合并,以提升信息的层级性和视觉专业性。这一过程的核心原理是:先对数据按合并字段排序,保证相同值连续,再通过openpyxl的merge_cells方法将连续区域合并。该技术广泛用于报表导出、数据看板、多级表头等企业级场景,能显著提高非技术人员的阅读效率。同时需注意合并后程序读取时非左上角单元格为None、边框顺序等问题。掌握嵌套列表的清洗、排序

weixin_33812433的博客 420

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

python——pandas总结

Introduction 先吐槽一下,优快云博客编写模块太难用,很多bug!!!!!!! 做了几个kaggle比赛之后,突然发现数据处理能力太差,包括缺省值处理,各种索引方式以及各种数据类型,彼此之间用法很容易搞混,因此有必要对pandas做做总结。参考了以下内容: 1、十分钟搞定pandas 2、七月在线——python数据分析班 总结内容很多,这里只贴出部分内容

sqiu_11的博客 1237

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: python模块之pathlib的使用介绍,用于解决路径相关问题,功能与os.path类似,但是使用更为方便
下一篇: 递归算法时间复杂度的数学证明过程(主定理)
你大佬来啦
博客等级 码龄7年 322粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值