总结:在工作场景中的应用。(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)