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

高分思路!挑战7天完成一篇网状meta DAY1-7

PASSION!继续析挑战,7天完成一篇网状meta分!

MR_SCI_help的博客 786

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

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

cshy2013的博客 5977

积木报表导出数据量太大报错

‌性能问题‌:‌当数据量非常大时,‌积木报表在导出过程中可能会遇到性能瓶颈,‌导致导出过程缓慢甚至失败。‌解决这一问题的方法包括优化SQL查询、‌调整分页大小、‌使用更适合处理大量数据的库(‌如阿里巴巴的EasyExcel)‌进行导出,‌或者采用异步处理的方式来避免接口超时1。‌内存溢出‌:‌如果报表工具或其依赖的库不支持流式(‌分批)‌导出,‌大量数据的处理可能会导致内存溢出。‌数据处理方式‌:‌如果待导出的数据包含特殊字符,‌如英文双引号或等号,‌这可能导致JSON反序列化报错。

Activiti工作流 1906

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

部署资源管理系统chemx

资源管理系统的部署教程

weixin_40784215的博客 822

Cadence仿真实战:从零构建高精度带隙基准电压源

本文是一份详细的Cadence仿真实战指南,指导读者从零开始构建高精度带隙基准电压源。文章首先解释了带隙基准电压源稳定输出电压的原理,然后逐步演示了在Cadence Virtuoso环境中如何搭建测试电路、测量关键温度系数、计算并搭建核心电路,并通过参数扫描和迭代调优来驯服温度漂移,最终实现低漂移的基准电压输出。

weixin_29207533的博客 242

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

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

weixin_39659748的博客 440

【踩坑记录】colmap中的相机位姿的坐标系定义及其可视化结果的隐含转换

1 坐标系定义及转换   首先介绍一下世界坐标系和相机坐标系之间的转换,它们之间是存在一个转换关系的。现假设空间中一点X,它在相机坐标系下的坐标是Xcamera,在世界坐标系下的坐标是Xworld。假设它通过R和t实现从相机坐标系到世界坐标系之间的转换: Xworld = RXcamera + t   那么,由上式,我们可以推得从世界坐标系向相机坐标系的转换关系(RT=R-1,所以通常直接使用RT即可): Xcamera = RTXworld - RTt   所以,两个坐标系之间的转换,需要看其具体

zeeq的博客 2万+

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

〔重庆理工大学〕计算机组成原理课设报告--16位单周期CPU设计

本课程设计的实验平台为Altera Quartus II 软件和Altera Cyclone V Starter 工具箱。(1)Cyclone V是Altera FPGAs家族的一类,它面向低功耗应用。Cyclone V GX 5CGXFC5C6F27C7N 芯片有不同的转换器,按钮,LED灯,七段显示器,HDMI接口,SD卡读卡器以及其他链接等。Cyclone V GX 5CGXFC5C6F27C7N是Starter工具箱的重要组件。(2)测试台包含在测设备(DUT)和用于仿真的模拟输入。

Pretty Boy Fox的博客 1066

【人工智能之深度学习】18. 金融风控实战:TCN时序卷积网络构建信用卡欺诈实时检测系统

摘要:信用卡欺诈交易识别是金融风控的核心环节,其面临欺诈样本占比低(仅0.1%)、实时响应要求高(毫秒级)等挑战。本文基于IEEE-CIS公开数据集,构建基于时序卷积网络(TCN)的欺诈检测系统,通过捕捉用户交易行为的时序模式识别异常。详细阐述全流程:从数据预处理(构造交易序列特征)、TCN模型设计(轻量级架构适配实时场景),到实时检测部署(异步处理确保低延迟)。实验显示,该系统精确率达63%、召回率89%,误杀率仅0.2%,推理延迟8ms,较XGBoost等传统模型性能显著提升。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1128

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

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

weixin_33938733的博客 572

大模型工作流Dify面试题及参考答案

设计一个基于 Dify 的智能摘要与重点提取 Agent,需结合Prompt 工程、模型能力配置和工作流优化,确保对长文本的高效解析和关键信息提炼。1. 明确任务需求与输入输出输入:长文本内容(如文章、报告、会议记录)或文本 URL输出摘要:简洁概括原文核心内容,控制在原文长度的 10%-20%重点列表:分点列出关键数据、结论、行动项等可选:关键词提取、情感倾向分析示例场景输入:一篇 5000 字的行业报告。

大模型大数据攻城狮的专栏 2510

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

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

weixin_33158887的博客 225

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

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

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

weixin_33812433的博客 420

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

python——pandas总结

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

sqiu_11的博客 1237

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

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

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值