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

发布于:2025-08-30 ⋅ 阅读:(15) ⋅ 点赞:(0)

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

处理 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 pd

df = 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 pd

df = 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)