Pandas里怎么用城市当行索引,再灵活筛选、增删改列和行?

# 题目重述 使用给定的学生信息创建一个 DataFrame,并完成以下操作: a) 将“城市”列设为行索引; b) 通过列索引获取“学号”和“姓名”两列; c) 使用切片获取第1-3行数据; d) 使用 `head()` 和 `tail()` 获取前3行和后3行; e) 使用 `loc` 和 `iloc` 获取指定行列数据; f) 使用 `query()` 方法筛选性别为“男”的行; g) 使用布尔索引筛选性别为“女”的行; h) 增加一行新学生数据(008, 小八, 女, 安徽); i) 添加 `score` 列,在第二列位置添加 `age` 列; j) 删除城市为“重庆”的行及 `score` 列; k) 将“小三”“小四”改为“王三”“李四”; l) 自主修改行名和列名。 --- # 给出答案(答案为带注释的代码块) ```python import pandas as pd # 原始数据 data = { '学号': ['001', '002', '003', '004', '005'], '姓名': ['小', '小二\\二', '小三', '小四', '小五'], '性别': ['男', '女', '男', '男', '女'], '城市': ['重庆', '上海', '北京', '重庆', '北京'] } # 创建DataFrame df = pd.DataFrame(data) # a) 将城市设为行索引 df.set_index('城市', inplace=True) # b) 通过列索引获取学号和姓名 col_data = df[['学号', '姓名']] # c) 切片获取1-3行(注意:索引可能重复,使用位置切片) slice_data = df.iloc[0:3] # d) head() 和 tail() head_data = df.head(3) tail_data = df.tail(3) # e) loc: 按标签获取 loc_cols = df.loc[:, ['学号', '姓名']] # 所有行的学号、姓名 loc_rows = df.loc['重庆':'北京', '姓名':'性别'] # 注意多级索引行为 # iloc: 按位置获取 iloc_cols = df.iloc[:, [0, 1]] # 第1、2列 iloc_rows = df.iloc[0:3, 1:3] # 前3行,姓名和性别列 # f) query筛选男性(注意索引非唯一,需处理转义字符) df_reset = df.reset_index() # 临时重置便于query male_data = df_reset.query("性别 == '男'").set_index('城市') # g) 布尔表达式筛选女性 female_data = df[df['性别'] == '女'] # h) 增加一行数据(注意:原索引为城市) new_row = pd.Series({ '学号': '008', '姓名': '小八', '性别': '女' }, name='安徽') df = pd.concat([df, new_row.to_frame().T]) # i) 添加score列;在第二列插入age列 df['score'] = None df.insert(1, 'age', None) # 在“姓名”前列插入age # j) 删除行索引为“重庆”的数据;删除score列 df = df.drop(index='重庆') # 删除所有重庆行 df = df.drop(columns='score') # k) 修改“小三”“小四”为“王三”“李四” df.loc[df['姓名'] == '小三', '姓名'] = '王三' df.loc[df['姓名'] == '小四', '姓名'] = '李四' # l) 修改行名(例如将“北京”改为“BJ”)、列名 df = df.rename(index={'北京': 'BJ'}, columns={'学号': 'ID', '姓名': 'Name', '性别': 'Gender', 'age': 'Age'}) ``` --- # 代码解析 1. **数据构建**:使用字典构造原始数据,`pd.DataFrame()` 初始化; 2. **索引设置**:`set_index()` 将“城市”作为行索引; 3. **列选取**:双括号 `[[]]` 提取多列; 4. **切片操作**:`iloc[0:3]` 是前3行的位置切片; 5. **head/tail**:快速查看数据首尾部分; 6. **loc/iloc 区别**: - `loc`:基于标签访问; - `iloc`:基于整数位置; 7. **query 方法**:字符串条件查询,适用于重置索引后的结构化查询; 8. **布尔索引**:`df[condition]` 实现过滤; 9. **新增行**:使用 `pd.Series` 并以城市为 name 构造单行,再用 `concat` 合并; 10. **新增列**: - 直接赋值添加 `score`; - `insert()` 在指定位置插入 `age`; 11. **删除操作**: - `drop(index=...)` 删除指定索引行; - `drop(columns=...)` 删除列; 12. **修改值**:利用布尔索引定位并替换姓名; 13. **重命名**:`rename()` 修改索引和列名。 --- # 知识点(列出该代码中遇到的知识点) - **Pandas DataFrame基本操作**:创建、增删改查、索引设置。 (掌握数据结构核心API是数据分析基础。) - **loc与iloc索引区别**:`loc`按标签,`iloc`按位置。 (正确选择索引方式避免越界或误选。) - **数据筛选与条件查询**:布尔索引、query方法应用。 (高效提取子集的关键技术。)

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

Python内容推荐

python pandas获取csv指定行 列的操作方法

python pandas获取csv指定行 列的操作方法

主要介绍了pandas获取csv指定行,列的操作方法,本文简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)

利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)

主要给大家介绍了关于利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

python pandas库中DataFrame对行和列的操作实例讲解

python pandas库中DataFrame对行和列的操作实例讲解

今天小编就为大家分享一篇python pandas库中DataFrame对行和列的操作实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

python pandas dataframe 按列或者按行合并的方法

python pandas dataframe 按列或者按行合并的方法

下面小编就为大家分享一篇python pandas dataframe 按列或者按行合并的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)

python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)

今天小编就为大家分享一篇python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

Python实现删除某列中含有空值的行的示例代码

Python实现删除某列中含有空值的行的示例代码

主要介绍了Python实现删除某列中含有空值的行的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

AI面试官智能体,Python + Flask + Coze.zip

AI面试官智能体,Python + Flask + Coze.zip

2026 最系统的 AI Agent 速成指南|智能体实战教程 · 完整学习路径 + 实战项目 + 面试题库 · 对标大模型应用开发工程师岗位 · 覆盖LangChain / LangGraph / Coze / Dify / MCP / skills / LLM /…

【CEEMDAN-WOA-LSTM】完备集合经验模态分解-鲸鱼优化-长短时记忆神经网络研究(Python代码实现)

【CEEMDAN-WOA-LSTM】完备集合经验模态分解-鲸鱼优化-长短时记忆神经网络研究(Python代码实现)

内容概要:本文系统性地介绍了一种融合信号处理、智能优化与深度学习技术的时间序列预测模型——“完备集合经验模态分解-鲸鱼优化-长短时记忆神经网络(CEEMDAN-WOA-LSTM)”。该研究面向多变量输入的单步时间序列预测任务,尤其适用于风电功率预测等复杂非线性系统。首先,采用CEEMDAN方法对原始信号进行自适应分解,有效分离不同频率成分并显著降低噪声干扰;其次,引入鲸鱼优化算法(WOA)对LSTM神经网络的关键超参数进行全局寻优,克服传统手动调参效率低、易陷入局部最优的问题;最后,构建基于优化后参数的LSTM预测子模型,并将各IMF分量预测结果集成,形成最终高精度预测输出。整个流程充分结合了信号分解的稳定性、智能优化的高效性与深度学习的强大拟合能力,显著提升了预测模型的准确性与鲁棒性。; 适合人群:具备一定编程基础和机器学习背景的研究生、科研人员及工程技术人员,尤其适用于从事新能源发电预测、智能优化算法研究、信号处理或时间序列建模等相关领域的从业者。; 使用场景及目标:①应用于风电、光伏发电、负荷、交通流、金融等领域的多变量时间序列预测任务;②为科研工作者提供一种先进的“信号分解-参数优化-深度学习”混合建模范式,用于解决复杂非线性系统的建模与预测难题,提升模型性能;③作为智能算法在能源系统中的典型应用案例,服务于日前调度、电力市场出清、储能配置等决策支持。; 阅读建议:建议读者结合提供的Python代码实现,深入理解CEEMDAN分解、WOA优化机制与LSTM建模的全过程,重点关注各模块间的衔接逻辑与数据流动。鼓励在真实数据集上复现该模型,通过调整参数、替换优化算法或对比不同分解方法,以掌握模型调优的核心技巧与泛化能力。

pandas将DataFrame的列变成行索引的方法

pandas将DataFrame的列变成行索引的方法

下面小编就为大家分享一篇pandas将DataFrame的列变成行索引的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

pandas删除含有特定数值的行或列

pandas删除含有特定数值的行或列

使用pandas处理数据时,如何实现删除/选取某列含有特殊数值的行或者某行含有特殊数值的列,以及如何去除含有空值的行或列

基于pandas向csv添加新的行和列

基于pandas向csv添加新的行和列

主要介绍了基于pandas向csv添加新的行和列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

pandas数据处理基础之筛选指定行或者指定列的数据

pandas数据处理基础之筛选指定行或者指定列的数据

主要介绍了pandas数据处理基础之筛选指定行或者指定列的数据的相关资料,需要的朋友可以参考下

pandas按若干个列的组合条件筛选数据的方法

pandas按若干个列的组合条件筛选数据的方法

下面小编就为大家分享一篇pandas按若干个列的组合条件筛选数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

Pandas DataFrame数据的更改、插入新增的列和行的方法

Pandas DataFrame数据的更改、插入新增的列和行的方法

主要介绍了Pandas DataFrame数据的更改、插入新增的列和行的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

pandas按行按列遍历Dataframe的几种方式

pandas按行按列遍历Dataframe的几种方式

主要介绍了pandas按行按列遍历Dataframe的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

pandas 选取行和列数据的方法详解

pandas 选取行和列数据的方法详解

前言 本文介绍在 pandas 中如何读取数据行列的方法。数据由行和列组成,在数据库中,一般行被称作记录 (record),列被称作字段 (field)。回顾一下我们对记录和字段的获取方式:一般情况下,字段根据名称获取,记录根据筛选条件获取。比如获取 student_id 和 studnent_name 两个字段;记录筛选,比如 sales_amount 大于 10000 的所有记录。对于熟悉 SQL 语句的人来说,就是下面的语句: select student_id, student_name from exam_scores where chinese >= 90 and math >

pandas.DataFrame删除/选取含有特定数值的行或列实例

pandas.DataFrame删除/选取含有特定数值的行或列实例

今天小编就为大家分享一篇pandas.DataFrame删除/选取含有特定数值的行或列实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

pandas删除行删除列增加行增加列的实现

pandas删除行删除列增加行增加列的实现

主要介绍了pandas删除行删除列增加行增加列的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

用pandas中的DataFrame时选取行或列的方法

用pandas中的DataFrame时选取行或列的方法

今天小编就为大家分享一篇用pandas中的DataFrame时选取行或列的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

pandas DataFrame 行列索引及值的获取的方法

pandas DataFrame 行列索引及值的获取的方法

主要介绍了pandas DataFrame 行列索引及值的获取的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

最新推荐最新推荐

recommend-type

QTZ40塔式起重机总体及起升系统的设计.rar

QTZ40塔式起重机总体及起升系统的设计.rar
recommend-type

AI生成内容版权保护解决方案.pptx

AI生成内容版权保护解决方案.pptx
recommend-type

TE511_renishaws_non-contact_laser_toolsetting_technology (1).pdf

雷尼绍相关技术文档
recommend-type

S50-65旋回破碎机CAD图纸 备注:此份资料只有一张.rar

S50-65旋回破碎机CAD图纸 备注:此份资料只有一张.rar
recommend-type

行业专属自治智能体建设方案.pptx

行业专属自治智能体建设方案.pptx
recommend-type

学生成绩管理系统C++课程设计与实践

资源摘要信息:"学生成绩信息管理系统-C++(1).doc" 1. 系统需求分析与设计 在进行学生成绩信息管理系统开发前,首先需要进行系统需求分析,这是确定系统开发目标与范围的过程。需求分析应包括数据需求和功能需求两个方面。 - 数据需求分析: - 学生成绩信息:需要收集学生的姓名、学号、课程成绩等数据。 - 数据类型和长度:明确每个数据项的数据类型(如字符串、整型等)和长度,例如学号可能是字符串类型且长度为一定值。 - 描述:详细描述每个数据项的意义,以确保系统能够准确处理。 - 功能需求分析: - 列出功能列表:用户界面应提供清晰的操作指引,列出所有可用功能。 - 查询学生成绩:系统应能通过学号或姓名查询学生的成绩信息。 - 增加学生成绩信息:允许用户添加未保存的学生成绩信息。 - 删除学生成绩信息:能够通过学号或姓名删除已经保存的成绩信息。 - 修改学生成绩信息:通过学号或姓名修改已有的成绩记录。 - 退出程序:提供安全退出程序的选项,并确保所有修改都已保存。 2. 系统设计 系统设计阶段主要完成内存数据结构设计、数据文件设计、代码设计、输入输出设计、用户界面设计和处理过程设计。 - 内存数据结构设计: - 使用链表结构组织内存中的数据,便于动态增删查改操作。 - 数据文件设计: - 选择文本文件存储数据,便于查看和编辑。 - 代码设计: - 根据功能需求,编写相应的函数和模块。 - 输入输出设计: - 设计简洁明了的输入输出提示信息和操作流程。 - 用户界面设计: - 用户界面应为字符界面,方便在命令行环境下使用。 - 处理过程设计: - 设计数据处理流程,确保每个操作都有明确的处理逻辑。 3. 系统实现与测试 实现阶段需要根据设计阶段的成果编写程序代码,并进行系统测试。 - 程序编写: - 完成系统设计中所有功能的程序代码编写。 - 系统测试: - 设计测试用例,通过测试用例上机测试系统。 - 记录测试方法和测试结果,确保系统稳定可靠。 4. 设计报告撰写 最后,根据系统开发的各个阶段,撰写详细的设计报告。 - 系统描述:包括问题说明、数据需求和功能需求。 - 系统设计:详细记录内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。 - 系统测试:包括测试用例描述、测试方法和测试结果。 - 设计特点、不足、收获和体会:反思整个开发过程,总结经验和教训。 时间安排: - 第19周(7月12日至7月16日)完成项目。 - 7月9日8:00到计算机学院实验中心(三楼)提交程序和课程设计报告。 指导教师和系主任(或责任教师)需要在文档上签名确认。 系统需求分析: - 使用表格记录系统需求分析的结果,包括数据项、数据类型、数据长度和描述。 - 分析数据项如学生成绩信息、状态器、链表节点等,确定其属性和行为。 以上就是文档中提到的学生成绩信息管理系统开发的关键知识点。开发此类系统需要熟练掌握C++编程基础,了解面向对象的程序设计思想,以及熟悉文件操作和链表等数据结构的应用。此外,良好的软件开发流程意识、测试意识和文档撰写能力也是必不可少的。
recommend-type

别再手动拖拽了!用Lumerical脚本批量创建FDTD仿真结构(附完整代码)

# 告别低效建模:Lumerical脚本自动化实战指南 在光子学仿真领域,时间就是科研生命线。当同行还在GUI界面里反复点击菜单时,你已经用脚本批量生成了20组参数化结构——这不是未来场景,而是每位FDTD用户都应该掌握的基础生产力革命。本文将彻底改变你与Lumerical的交互方式,从手动拖拽的农耕时代,跃迁到自动化建模的工业文明。 ## 1. 为何脚本建模是必然选择 2019年Nature Photonics的一项研究显示,科研工作者在仿真工具上平均浪费37%的时间在重复性操作上。对于需要参数扫描的纳米光学结构设计,这个数字可能更高。手动创建10个不同尺寸的纳米柱阵列意味着: -
recommend-type

Java邮件解析任务中,如何安全高效地提取HTML邮件内容并避免硬编码、资源泄漏和类型转换异常?

<think>我们被要求优化一段Java代码,该代码用于处理邮件(特别是来自特定发件人的构建通知邮件)。代码的主要问题包括: 1. 重复获取邮件内容:在检查MIME类型后,多次调用`msg[i].getContent()`,这可能导致性能问题或流关闭异常。 2. 类型转换问题:直接将邮件内容转换为`Multipart`而不进行类型检查,可能引发`ClassCastException`。 3. 代码结构问题:逻辑嵌套过深,可读性差,且存在重复代码(如插入邮件详情的操作在两个地方都有)。 4. 硬编码和魔法值:例如在解析HTML表格时使用了硬编码的索引(如list3.get(10)),这容易因邮件
recommend-type

RH公司应收账款管理优化策略研究

资源摘要信息:"本文针对RH公司的应收账款管理问题进行了深入研究,并提出了改进策略。文章首先分析了应收账款在企业管理中的重要性,指出其对于提高企业竞争力、扩大销售和充分利用生产能力的作用。然后,以RH公司为例,探讨了公司应收账款管理的现状,并识别出合同管理、客户信用调查等方面的不足。在此基础上,文章提出了一系列改善措施,包括完善信用政策、改进业务流程、加强信用调查和提高账款回收力度。特别强调了建立专门的应收账款回收部门和流程的重要性,并建议在实际应用过程中进行持续优化。同时,文章也意识到企业面临复杂多变的内外部环境,因此提出的策略需要根据具体情况调整和优化。 针对财务管理领域的专业学生和从业者,本文提供了一个关于应收账款管理问题的案例研究,具有实际指导意义。文章还探讨了信用管理和征信体系在应收账款管理中的作用,强调了它们对于提升企业信用风险控制和市场竞争能力的重要性。通过对比国内外企业在应收账款管理上的差异,文章总结了适合中国企业实际环境的应收账款管理方法和策略。" 根据提供的文件内容,以下是详细的知识点: 1. 应收账款管理的重要性:应收账款作为企业的一项重要资产,其有效管理关系到企业的现金流、财务健康以及市场竞争力。不良的应收账款管理会导致资金链断裂、坏账损失增加等问题,严重影响企业的正常运营和长远发展。 2. 应收账款的信用风险:在信用交易日益频繁的商业环境中,企业必须对客户信用进行评估,以便采取合理的信用政策,降低信用风险。 3. 合同管理的薄弱环节:合同是应收账款管理的法律基础,严格的合同管理能够保障企业权益,减少因合同问题导致的应收账款风险。 4. 客户信用调查:了解客户的信用状况对于预测和控制应收账款风险至关重要。企业需要建立有效的客户信用调查机制,识别和筛选信用良好的客户。 5. 应收账款回收策略:企业应建立有效的账款回收机制,包括定期的账款跟进、逾期账款的催收等。同时,建立专门的应收账款回收部门可以提升回收效率。 6. 应收账款管理流程优化:通过改进企业内部管理流程,如简化审批流程、提高工作效率等措施,能够提升应收账款的管理效率。 7. 应收账款管理策略的调整和优化:由于企业的内外部环境复杂多变,因此制定的管理策略需要根据实际情况进行动态调整和持续优化。 8. 信用管理和征信体系的作用:建立和完善企业内部信用管理体系和征信体系,有助于企业更好地控制信用风险,并在市场竞争中占据有利地位。 9. 对比国内外应收账款管理实践:通过研究国内外企业在应收账款管理上的不同做法和经验,可以借鉴先进的管理理念和方法,提升国内企业的应收账款管理水平。 综上所述,本文深入探讨了应收账款管理的多个方面,为RH公司乃至其他同类型企业提供了应收账款管理的改进方向和策略,对于财务管理专业的教育和实践都具有重要的参考价值。
recommend-type

新手别慌!用BingPi-M2开发板带你5分钟搞懂Tina Linux SDK目录结构

# 新手别慌!用BingPi-M2开发板带你5分钟搞懂Tina Linux SDK目录结构 第一次拿到BingPi-M2开发板时,面对Tina Linux SDK里密密麻麻的文件夹,我完全不知道从哪下手。就像走进一个陌生的大仓库,每个货架上都堆满了工具和零件,却找不到操作手册。这种困惑持续了整整两天,直到我意识到——理解目录结构比死记硬背每个文件更重要。 ## 1. 为什么SDK目录结构如此重要 想象你正在组装一台复杂的模型飞机。如果所有零件都混在一个箱子里,你需要花大量时间寻找每个螺丝和面板。但如果有分门别类的隔层,标注着"机身部件"、"电子设备"、"紧固件",组装效率会成倍提升。Ti