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

总结:在工作场景中的应用。(Excel)

一.字段的合并方法(将多列内容合并成一列)

处理 Excel 操作是 Python 办公自动化的常用场景,我们可以用pandas库(简单易用)来实现这些功能。下面我会用 "普通人能看懂" 的方式,一步步讲解每个操作的具体方法,包括准备工作、代码和结果说明。

代码示例:

# 1. 导入工具
import pandas as pd# 2. 读取Excel文件(确保文件和代码在同一个文件夹)
df = pd.read_excel("data.xlsx")# 3. 合并字段(核心操作)
# 合并"姓"和"名"为"姓名"(中间加空格)
df["姓名"] = df["姓"] + " " + df["名"]# 合并"省"和"市"为"地址"(中间加"省"和"市"字)
df["地址"] = df["省"] + "省" + df["市"] + "市"# 4. 保存结果到新的Excel
df.to_excel("result.xlsx", index=False)  # index=False表示不保存行号

2. 字段的拆分方法(将一列内容拆分成多列)

场景:比如有 "姓名" 列(格式为 "张 三"),想拆成 "姓" 和 "名";或者有 "日期" 列(格式为 "2023-10-01"),想拆成 "年"" 月 ""日"。

# 1. 导入工具
import pandas as pd# 2. 读取Excel文件
df = pd.read_excel("data.xlsx")# 3. 拆分字段(核心操作)
# 拆分"姓名"列(按空格拆分,拆成2列)
# expand=True表示拆分成多列
name_split = df["姓名"].str.split(" ", expand=True)
df["姓"] = name_split[0]  # 第一部分作为"姓"
df["名"] = name_split[1]  # 第二部分作为"名"# 拆分"日期"列(按"-"拆分,拆成3列)
date_split = df["日期"].astype(str).str.split("-", expand=True)  # 先转成字符串
df["年"] = date_split[0]
df["月"] = date_split[1]
df["日"] = date_split[2]# 4. 保存结果
df.to_excel("result.xlsx", index=False)

3. 字段的匹配操作(类似 Excel 的 VLOOKUP 功能)

场景:有两个表,想根据一个共同的 "关键词"(比如 "学号"),把第二个表的信息匹配到第一个表中。

# 1. 导入工具
import pandas as pd# 2. 读取两个表
df1 = pd.read_excel("表1.xlsx")  # 主表(需要补充信息的表)
df2 = pd.read_excel("表2.xlsx")  # 副表(提供补充信息的表)# 3. 匹配操作(核心:类似VLOOKUP)
# on="学号":根据"学号"这一列匹配
# how="left":保留主表(df1)的所有行,即使副表没有对应数据
merged_df = pd.merge(df1, df2, on="学号", how="left")# 4. 保存结果
merged_df.to_excel("匹配结果.xlsx", index=False)

4. 表格的合并方法(将多个表上下拼接成一个表)

场景:比如有 "1 班成绩.xlsx" 和 "2 班成绩.xlsx",结构完全相同(列名一样),想合并成 "全年级成绩.xlsx"。

# 1. 导入工具
import pandas as pd# 2. 读取多个表
df1 = pd.read_excel("1班.xlsx")
df2 = pd.read_excel("2班.xlsx")# 3. 合并表格(核心:上下拼接)
# axis=0表示纵向合并(上下拼),ignore_index=True表示重新编号行
combined_df = pd.concat([df1, df2], axis=0, ignore_index=True)# 4. 保存结果
combined_df.to_excel("全年级.xlsx", index=False)

5. 表格的拆分方法(将一个表按条件拆分成多个表)

场景:有一个 "全年级成绩.xlsx",想按 "班级" 列拆分成 "1 班.xlsx""2 班.xlsx" 等多个文件。

# 1. 导入工具
import pandas as pd# 2. 读取总表
df = pd.read_excel("全年级.xlsx")# 3. 按"班级"列拆分(核心操作)
# 获取所有不重复的班级(比如["1班", "2班"])
classes = df["班级"].unique()# 循环每个班级,保存成单独的文件
for cls in classes:# 筛选出当前班级的所有行class_df = df[df["班级"] == cls]# 保存为Excel(文件名用班级名)class_df.to_excel(f"{cls}.xlsx", index=False)

6. 表格的转换方法(行列转换、格式转换等)

场景:比如想把表格 "转置"(行变列、列变行);或者把 "宽表" 转成 "长表"(适合统计分析)。

表格转置(行列互换)

import pandas as pddf = pd.read_excel("销售数据.xlsx")
# 转置操作(T是transpose的缩写)
transposed_df = df.T  # 行变列,列变行
# 重置表头(转置后第一行作为表头)
transposed_df.columns = transposed_df.iloc[0]  # 用第一行数据作为列名
transposed_df = transposed_df.drop(transposed_df.index[0])  # 删除原来的表头行transposed_df.to_excel("转置结果.xlsx", index_label="产品")  # index_label给行名加标题

操作 2:宽表转长表(适合数据透视)

import pandas as pddf = pd.read_excel("销售数据.xlsx")
# 宽表转长表(核心用melt函数)
# id_vars:保留不变的列(这里是"月份")
# var_name:原来的列名(产品A、产品B)存到"产品"列
# value_name:原来的数值存到"销量"列
long_df = df.melt(id_vars=["月份"], var_name="产品", value_name="销量")long_df.to_excel("长表结果.xlsx", index=False)

http://www.dtcms.com/a/354573.html

相关文章:

  • UGUI源码剖析(13):交互的基石——Selectable状态机与Button事件
  • 【qml-7】qml与c++交互(自动补全提示)
  • mac m4执行nvm install 14.19.1报错,安装低版本node报错解决
  • 微服务保护和分布式事务-01.雪崩问题-原因分析
  • LeetCode-279. 完全平方数
  • 楼宇自控系统应需而生为现代建筑装上智能化翅膀
  • 【论文阅读】CLIP: 从自然语言监督中学习可迁移的视觉模型
  • 移动端网页调试实战,iOS WebKit Debug Proxy 的应用与替代方案
  • 《口令猜测研究进展》——论文阅读
  • springboot连接不上redis,但是redis客户端是能连接上的
  • ⸢ 贰 ⸥ ⤳ 安全架构:数字银行安全体系规划
  • iOS混淆工具实战,社交类 App 的隐私与安全防护混淆流程
  • 【C++详解】用哈希表封装实现myunordered_map和 myunordered_set
  • Redis 保证数据不丢失
  • 系统架构设计师备考第10天——网络技术-局域网以太网
  • [n8n] 全文检索(FTS)集成 | Mermaid图表生成
  • 基于django的梧桐山水智慧旅游平台设计与开发(代码+数据库+LW)
  • [p2p-Magnet] docs | HTTP API与Web界面 | 搜索查询引擎
  • OpenAI重组受阻:微软“锁链”与生态博弈
  • [p2p-Magnet] 数据模型(GORM) | DHT爬虫 | 分类器
  • 华为云OBS+HMS+EMRonEC2+HiveSparkFlink+GaussDB
  • GaussDB 修改schema属主时报:must be member of role “dtest“
  • 架构设计模式七大原则
  • 如何将iPhone上的隐藏照片传输到电脑
  • 零基础开发应用:cpolar+Appsmith平民化方案
  • AbpVnext 阿里云ssl证书多个生产环境自动更新
  • 观远BI仪表板智能洞察场景实战:如何破解门店销售、渠道转化与经营分析难题
  • 用React写一个技能冷却的案例,关于节流
  • C++《哈希表》
  • Day16_【机器学习常见术语】