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

模块二-数据选择与索引——06. 列选择与操作

06. 列选择与操作1. 概述数据选择是 Pandas 最常用的操作之一。掌握列选择与操作可以高效地提取、添加、修改和删除数据列。importpandasaspdimportnumpyasnp# 创建示例数据dfpd.DataFrame({姓名:[张三,李四,王五,赵六,钱七],年龄:[25,30,28,32,35],城市:[北京,上海,广州,深圳,杭州],工资:[8000,12000,10000,15000,11000],部门:[技术,销售,技术,市场,销售]})print(原始数据:)print(df)2. 选择单列2.1 使用方括号df[列名]最常用的方式返回 Series。# 选择单列name_coldf[姓名]print(姓名列:)print(name_col)print(f类型:{type(name_col)})# 选择单列的另一种写法仅当列名是有效 Python 标识符name_col2df.姓名print(\n使用点语法:)print(name_col2)注意点语法有局限性当列名包含空格、特殊字符或与 DataFrame 方法重名时不能用。推荐使用方括号。2.2 获取列的值数组# 获取 NumPy 数组valuesdf[工资].valuesprint(f工资数组:{values})print(f类型:{type(values)})# 获取列表values_listdf[工资].tolist()print(f工资列表:{values_list})3. 选择多列使用双括号df[[列1, 列2]]返回 DataFrame。# 选择多列subsetdf[[姓名,年龄,工资]]print(选择多列:)print(subset)print(f类型:{type(subset)})# 使用变量指定列名cols[姓名,城市]subset2df[cols]print(\n使用变量:)print(subset2)4. 添加新列4.1 直接赋值添加# 添加常量列df[等级]普通print(添加常量列:)print(df)# 通过现有列计算df[年薪]df[工资]*12print(\n添加计算列:)print(df)# 通过条件添加df[是否高薪]df[工资]10000print(\n添加条件列:)print(df)4.2 使用 assign() 方法assign()返回新的 DataFrame不修改原数据。# 使用 assign 添加列df_newdf.assign(月薪df[工资],年薪2df[工资]*12,评级lambdax:Aifx[工资].mean()10000elseB)print(使用 assign 添加列:)print(df_new)# 原数据未被修改print(\n原数据不变:)print(df.columns.tolist())4.3 使用 insert() 插入到指定位置# 在指定位置插入列位置、列名、值df.insert(1,性别,[男,女,男,女,男])print(插入列到位置1:)print(df)5. 修改列5.1 修改整列的值# 修改整列df[等级]黄金print(修改等级列:)print(df)# 批量修改df[年薪]df[年薪]*1.1# 涨薪10%print(\n修改年薪:)print(df)5.2 条件修改# 使用 loc 条件修改df.loc[df[工资]10000,等级]钻石print(条件修改等级:)print(df)# 使用 numpy wheredf[奖金]np.where(df[工资]10000,10000,5000)print(\n条件添加奖金:)print(df)5.3 使用 map() 映射修改# 创建映射字典level_map{普通:Normal,黄金:Gold,钻石:Diamond}df[等级英文]df[等级].map(level_map)print(使用 map 映射:)print(df)6. 重命名列6.1 使用 rename() 方法# 重命名单个列df_renameddf.rename(columns{姓名:name,年龄:age})print(重命名单个列:)print(df_renamed)# 重命名多个列df_renameddf.rename(columns{姓名:name,年龄:age,城市:city,工资:salary})print(\n重命名多个列:)print(df_renamed)# 原地修改df.rename(columns{等级英文:level_en},inplaceTrue)print(\n原地修改:)print(df.columns.tolist())6.2 直接修改 columns 属性# 直接赋值需要提供全部列名df.columns[name,gender,age,city,salary,dept,level,annual_salary,is_high_salary,bonus,level_en]print(直接修改 columns:)print(df.head())# 使用列表推导式批量修改# df.columns [col.upper() for col in df.columns]7. 删除列7.1 使用 drop() 方法# 删除单列df_droppeddf.drop(bonus,axis1)print(删除 bonus 列:)print(df_dropped.columns.tolist())# 删除多列df_droppeddf.drop([level_en,is_high_salary],axis1)print(\n删除多列:)print(df_dropped.columns.tolist())# 原地删除df.drop(bonus,axis1,inplaceTrue)print(\n原地删除:)print(df.columns.tolist())7.2 使用 del 语句# 删除列原地删除deldf[level_en]print(使用 del 删除:)print(df.columns.tolist())7.3 使用 pop() 方法pop()删除列并返回该列。# 删除并返回列removed_coldf.pop(annual_salary)print(删除的列:)print(removed_col.head())print(\n剩余列:)print(df.columns.tolist())8. 列的类型转换8.1 查看列类型print(列类型:)print(df.dtypes)8.2 转换列类型# 转换为字符串df[年龄]df[年龄].astype(str)print(年龄转为字符串:)print(df.dtypes)# 转换为整数df[年龄]df[年龄].astype(int)print(\n年龄转回整数:)print(df.dtypes)# 转换为分类类型节省内存df[部门]df[部门].astype(category)print(\n部门转为 category:)print(df.dtypes)9. 列的排序9.1 按列名排序# 按列名排序axis1 表示列df_sorteddf.reindex(sorted(df.columns),axis1)print(按列名排序:)print(df_sorted.columns.tolist())9.2 指定列顺序# 指定列的顺序column_order[姓名,年龄,部门,城市,工资,等级]df_reordereddf[column_order]print(指定列顺序:)print(df_reordered.columns.tolist())10. 完整示例客户数据分析# 创建客户数据np.random.seed(42)customerspd.DataFrame({customer_id:range(1,11),name:[f客户_{i}foriinrange(1,11)],age:np.random.randint(20,60,10),purchase_amount:np.random.randint(100,5000,10),purchase_count:np.random.randint(1,20,10),city:np.random.choice([北京,上海,广州,深圳],10)})print(*60)print(原始客户数据)print(*60)print(customers)# 1. 选择特定列print(\n1. 选择客户ID、姓名、购买金额:)print(customers[[customer_id,name,purchase_amount]])# 2. 添加计算列customers[avg_purchase]customers[purchase_amount]/customers[purchase_count]customers[avg_purchase]customers[avg_purchase].round(0)print(\n2. 添加平均购买金额列:)print(customers[[name,purchase_amount,purchase_count,avg_purchase]])# 3. 添加客户等级customers[level]pd.cut(customers[purchase_amount],bins[0,1000,2000,3000,5000],labels[铜牌,银牌,金牌,钻石])print(\n3. 添加客户等级:)print(customers[[name,purchase_amount,level]])# 4. 重命名列customers.rename(columns{purchase_amount:total_spent,purchase_count:order_count},inplaceTrue)print(\n4. 重命名列:)print(customers.columns.tolist())# 5. 删除临时列customers.drop(avg_purchase,axis1,inplaceTrue)print(\n5. 删除临时列后:)print(customers.columns.tolist())# 6. 按购买金额排序显示print(\n6. 按消费金额降序:)print(customers[[name,total_spent,level]].sort_values(total_spent,ascendingFalse))11. 总结操作方法示例选择单列df[col]df[姓名]选择多列df[[col1, col2]]df[[姓名, 年龄]]添加列df[new] valuesdf[总分] df[数学] df[语文]添加列不修改原数据df.assign()df.assign(新列df[A] * 2)插入列df.insert(pos, name, values)df.insert(0, ID, range(10))条件修改df.loc[condition, col] valuedf.loc[df[年龄]30, 等级]高映射修改df[col].map(dict)df[性别].map({M:男,F:女})重命名列df.rename(columns{})df.rename(columns{A:a})删除列df.drop(col, axis1)df.drop(col, axis1)类型转换df[col].astype(type)df[年龄].astype(int32)

相关文章:

模块二-数据选择与索引——06. 列选择与操作

06. 列选择与操作 1. 概述 数据选择是 Pandas 最常用的操作之一。掌握列选择与操作,可以高效地提取、添加、修改和删除数据列。 import pandas as pd import numpy as np# 创建示例数据 df pd.DataFrame({姓名: [张三, 李四, 王五, 赵六, 钱七],年龄: [25, 30, 28,…...

基于MCP的任务编排框架:让AI代理动态规划与执行复杂工作流

1. 项目概述:一个面向AI代理的任务编排与执行框架最近在折腾AI应用开发,特别是想让大语言模型(LLM)能更“自主”地完成一些复杂任务时,发现了一个绕不开的痛点:任务编排。你给模型一个目标,比如…...

终极开源硬件控制方案:5分钟实现OMEN游戏本深度性能调优

终极开源硬件控制方案:5分钟实现OMEN游戏本深度性能调优 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub OmenSuperHub是一款专为惠普OMEN游戏本…...

为个人开源项目寻找高性价比大模型API的选型与实践

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为个人开源项目寻找高性价比大模型API的选型与实践 对于个人开发者或学生而言,运营一个GitHub开源项目常常需要在有限的…...

使用Taotoken后模型API调用的延迟与稳定性观测体验分享

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken后模型API调用的延迟与稳定性观测体验分享 作为一名日常需要与多种大模型API打交道的开发者,模型服务的稳…...

别再只调API了!深入Qt QGraphicsView事件流,彻底搞懂拖拽缩放背后的‘为什么’

深入Qt QGraphicsView事件流:从拖拽缩放的底层机制到高效调试 在Qt的图形视图框架中,QGraphicsView、QGraphicsScene和QGraphicsItem构成了一个强大的交互系统。许多开发者虽然能够通过调用API实现基本功能,但当遇到事件被意外吞噬、坐标计算…...

3PEAK思瑞浦 TPA3532-SO1R SOP8 运算放大器

特性 超低输入偏置电流:-在TA25C时最大土1pA(实验室测试限值)-在-40C至125C(实验室测试限值)下,最大土30皮安 低输入失调电压:250V(最大值)集成保护缓冲器,最大偏移电压200V低电压噪声密度:18nV/Hz(在1kHz时). 宽带宽:2.1MHz 供电电压:4.5V至16V(2.25V至…...

200+ 发音人怎么缩小范围:先定风格再试听

🎯 200 发音人怎么缩小范围:先定风格再试听面对顶伯文字转语音工具中超过 200 种发音人,选择困难症难免发作。😵 别急,掌握 「先定风格再试听」 的筛选逻辑,就能快速锁定目标。 本文从风格分类、筛选技巧到…...

Cerebro:为AI构建持久记忆与认知能力的本地化MCP工具系统

1. 项目概述:为AI赋予持久记忆与认知能力如果你和我一样,每天都在和Claude、ChatGPT这类大语言模型打交道,那你一定遇到过这个让人头疼的问题:每次开启一个新的对话会话,AI就像得了“健忘症”,之前聊过的项…...

终极指南:如何用ChatLaw构建你的免费中文法律AI助手

终极指南:如何用ChatLaw构建你的免费中文法律AI助手 【免费下载链接】ChatLaw ChatLaw:A Powerful LLM Tailored for Chinese Legal. 中文法律大模型 项目地址: https://gitcode.com/gh_mirrors/ch/ChatLaw 面对复杂的法律问题,你是否…...

3PEAK思瑞浦 TPA3532-VS1R MSOP8 运算放大器

特性 超低输入偏置电流: -在TA25C时最大士1pA(实验室测试限值) 安 -在-40C至125C(实验室测试限值)下,最大30皮 低输入失调电压:250V(最大值) 集成保护缓冲器,最大偏移电压为200V 低电压噪声密度:18nV/vHz(在1kHz时) 宽带宽:2.1MHz 供电电压:4.5V至16V(2.…...

Mali-400 MP OpenGL ES DDK核心问题与解决方案

## 1. Mali-400 MP OpenGL ES DDK核心问题解析作为ARM经典的移动GPU架构,Mali-400 MP在Symbian平台的OpenGL ES驱动开发套件(DDK)中存在三类典型问题。这些问题的根源往往涉及GPU硬件特性与图形API规范的微妙交互,开发者需要深入理解其底层机制才能有效规…...

学术生产力革命已来,NotebookLM Agent如何把文献综述时间压缩83%?实测数据首次公开!

更多请点击: https://intelliparadigm.com 第一章:NotebookLM Agent研究辅助 NotebookLM 是 Google 推出的基于用户上传文档进行深度理解与推理的 AI 助手,其内置的 Agent 能力可显著提升学术研究、技术调研与知识整合效率。当启用 Agent 模…...

DeepSeek Clean Code终极阈值(v2.3.1正式版):超出3个指标即触发强制重构——你达标了吗?

更多请点击: https://intelliparadigm.com 第一章:DeepSeek Clean Code终极阈值的演进与哲学内核 DeepSeek Clean Code 的“终极阈值”并非静态指标,而是代码可维护性、语义清晰度与执行确定性三者动态收敛的临界点。它源于对 LLM 推理链中 …...

Java SE 与 Spring Boot 在电商场景中的应用

面试:Java SE 与 Spring Boot 在电商场景中的应用 今天,我们将围绕一位求职者在一家电商公司的面试场景,与面试官进行一场激烈的技术问答。第一轮提问 面试官: 首先,请你简单介绍一下 JVM 的工作原理。 燕双非&#xf…...

Nature论文检索正在失效,Perplexity底层检索逻辑重构预警(仅限科研骨干内部流通的3条技术简报)

更多请点击: https://intelliparadigm.com 第一章:Nature论文检索正在失效,Perplexity底层检索逻辑重构预警(仅限科研骨干内部流通的3条技术简报) 检索信号衰减的实证观测 近期对Nature、Science主站及PubMed Centra…...

AI Agent配置安全扫描:AgentLint工具实战与供应链风险防护

1. 项目概述:AI Agent配置的“安全门卫”最近在折腾Claude Code和Cursor这类AI编程助手时,我发现了一个既让人兴奋又有点不安的事实:这些工具的配置文件(比如.claude/目录、CLAUDE.md或.cursorrules)功能强大到可以执行…...

ARM GIC中断控制器架构与关键寄存器详解

1. ARM GIC中断控制器架构概述ARM通用中断控制器(GIC)是现代ARM处理器中负责中断管理的核心组件,它实现了复杂的中断分发和处理机制。GIC架构从v2版本发展到现在的v4版本,功能不断增强,支持多核处理、虚拟化扩展和安全隔离等高级特性。GIC主要…...

Arm DDT:高性能计算并行程序调试利器

1. Arm DDT调试工具概述Arm DDT(Distributed Debugging Tool)是Arm公司开发的一款专业级并行程序调试工具,专为高性能计算(HPC)领域设计。作为Arm Forge工具套件的重要组成部分,DDT提供了强大的MPI程序调试…...

404 Not Found 与 500 Internal Server Error 全方位解析

前言在日常开发与运维中,HTTP 状态码是我们最常打交道的一类信号。其中,404 与 500 两类错误几乎占据了线上问题的一半以上。你是否遇到过:用户反馈页面打不开,浏览器提示 404 Not Found,但实际上资源明明存在&#xf…...

大模型高效化实战:从量化剪枝到推理部署的完整指南

1. 大模型高效化:从“巨无霸”到“精悍战士”的必经之路如果你和我一样,在过去的几年里深度参与过大语言模型的部署和应用,那你一定对“模型太大”这个问题深有体会。动辄几十GB甚至上百GB的模型文件,对显存的贪婪吞噬&#xff0c…...

2026金铲铲之战电脑版模拟器实测:选对模拟器轻松上分

一、实测前提说明作为拥有三年游玩经验的金铲铲之战老弈士,从手机端切换到电脑端游玩后,大屏在阵容运营、棋子对位、选秀博弈上的优势十分突出:手机小屏不仅看不清棋子星级、装备细节,频繁触屏操作还容易误触卖错棋子、放错站位&a…...

人工智能体共情能力模块设计与实践(下)

八、实验设计方案 8.1 数据集设计 建议构建一个多场景中文共情对话数据集。 场景分类 场景 示例 客服投诉 订单、退款、物流、系统故障 学习辅导 学不会、考试焦虑、代码报错 工作压力 加班、沟通冲突、任务失败 情绪倾诉 难过、焦虑、失落 决策支持 不知道如何选择 高风险表…...

ECA:编辑器无关的AI编程伴侣,统一配置多模型与编辑器

1. 项目概述:一个编辑器无关的AI编程伴侣如果你和我一样,每天大部分时间都泡在编辑器里,那你肯定也经历过这种场景:面对一段复杂的业务逻辑,或者一个陌生的API,你希望有个“懂行”的伙伴能立刻给你解释、重…...

清华系团队造出能“边听边说、边看边想“的AI耳朵MiniCPM-o 4.5

这项由清华大学自然语言处理实验室(THUNLP)主导、OpenBMB开源社区联合推出的研究成果,于2026年4月30日以预印本形式发布在arXiv平台,编号为arXiv:2604.27393。感兴趣的读者可通过这个编号检索到完整论文。**一场关于"耳朵和嘴…...

芯片晶圆平面度如何测量?半导体制造中的光学形貌检测方案

晶圆作为集成电路的核心承载基片,表面形貌的精度直接关系到光刻聚焦质量、芯片电学性能及最终良率。从8英寸到12英寸的大尺寸晶圆制造中,平面度、翘曲度(Warp)、总厚度变化(TTV)及局部平面度(SF…...

开源OmenSuperHub:解决惠普OMEN笔记本性能限制的完整技术方案

开源OmenSuperHub:解决惠普OMEN笔记本性能限制的完整技术方案 【免费下载链接】OmenSuperHub 使用 WMI BIOS控制性能和风扇速度,自动解除DB功耗限制。 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 第一部分:技术挑战分…...

AI时代工程师的超能力进化

好的,这是一篇关于AI时代工程师能力进化的技术文章大纲: 标题: AI时代工程师的“超能力”进化论:从工具使用者到智能架构师 导言: 简述AI技术的迅猛发展及其对各行业的深刻影响。提出问题:在AI成为强大“…...

AI编程助手上下文管理工具devcontext:构建项目记忆库提升开发效率

1. 项目概述:当AI助手拥有“记忆”,开发效率的质变如果你和我一样,每天大部分时间都在和代码编辑器、终端以及各种文档打交道,那你一定对这样的场景不陌生:接手一个新项目,光是理解代码库的结构、各个模块的…...

202X年CSDN年度技术趋势大预测

好的,以下是一篇关于CSDN年度技术趋势预测的技术文章大纲:202X年CSDN年度技术趋势预测:引领未来的技术变革一、引言技术发展的加速与变革年度技术趋势对行业的影响本文预测的依据与方法论二、人工智能与生成式AI的深化应用大模型技术的演进方…...