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

总结:在工作场景中的应用。(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.xdnf.cn/news/19054.html

相关文章:

  • Dify学习
  • 响应式编程框架Reactor【1】
  • Python 多版本环境治理理念驱动的系统架构设计——三维治理、四级隔离、五项自治 原则(路径治理升级修订 V 2.0 版)
  • 【深度学习新浪潮】显著性检测最新研究进展(2022-2025)
  • 上线问题——Mac系统下如何获取鸿蒙APP证书公钥和MD5指纹
  • 高并发内存池(14)- PageCache回收内存
  • Node.js的特性
  • 损失函数,及其优化方法
  • JS中的String总结
  • 2002-2020年全国投入产出表数据
  • Python 中的反射机制与动态灵活性
  • 实测阿里图像编辑模型Qwen-Image-Edit:汉字也能无痕修改(附实测案例)
  • react+vite+ts 组件模板
  • DAY-16-数组的常见操作和形状-2025.8.28
  • FISCO-BCOS-Python 模板
  • RAG概念被误用:AI应用落地需回归上下文工程本质
  • 解锁AI“黑匣”:监督、无监督与强化学习探秘
  • 切入高潜市场,抢占行业先机!ES SHOW 2025展位预订火爆,10月28-30日共启增长新蓝海
  • flutter Function和自定义的Callback有什么区别?
  • 自动化三维测量仪工业零件自动外观三维测量-中科米堆CASAIM
  • Linux系统资源分配算法在VPS云服务器调优-性能优化全指南
  • 【DAB收音机】DAB 信号发生器介绍
  • C++源代码批量转码utf8
  • SystemVerilog学习【六】功能覆盖率详解
  • 【动态规划】简单多状态 dp 问题
  • 【lucene】advanceShallow (int target) 与advance(int target)
  • Kea DHCP高危漏洞CVE-2025-40779:单个数据包即可导致服务器崩溃
  • workflow/http_parser源码解密:HTTP解析器的双倍扩容与零拷贝策略
  • R 语言 eulerr 包绘制韦恩图:比例精准
  • 机器学习(讲解)