[python]使用 Pandas 处理 Excel 数据:分割与展开列操作

在数据处理的过程中,时常需要对 Excel 表格中的数据进行清洗与转换,下面介绍使用 Python 中的 Pandas 库对 Excel 文件中的数据进行操作,具体包括分割列、展开数据、清除空格以及格式转换等操作。

目标:
  1. 读取一个没有表头的 Excel 文件。
  2. 分割指定列的数据,并展开成多个行。
  3. 清除空格,并按空格将列数据拆分成两列。
  4. 删除原始列,保持数据格式整洁。
  5. 保存处理后的数据到新的 Excel 文件。

示例代码

python 复制代码
import pandas as pd

# 读取 Excel 文件,假设没有表头,使用 header=None 参数
df = pd.read_excel('输入数据.xlsx', header=None, engine='openpyxl')

# 假设前四列是需要保留的,第五列是需要分割的列
# 对第五列(索引为4)进行分割
df[4] = df[4].str.split(',')

# 使用 pandas 的 `explode` 函数展开第五列
df_expanded = df.explode(4, ignore_index=True)

# 去除第五列的空格
df_expanded[4] = df_expanded[4].str.strip()

# 进一步将第五列按空格分割成两列
df_expanded[['分列1', '分列2']] = df_expanded[4].str.split(' ', n=1, expand=True)

# 删除原始的第五列(分割前的列)
df_expanded = df_expanded.drop(columns=[4])

# 将前四列设置为文本格式
df_expanded[0] = df_expanded[0].astype(str)
df_expanded[1] = df_expanded[1].astype(str)
df_expanded[2] = df_expanded[2].astype(str)
df_expanded[3] = df_expanded[3].astype(str)

# 保存处理后的数据为新的 Excel 文件
df_expanded.to_excel('output2.xlsx', index=False, header=False, engine='openpyxl')

print("处理完成,结果已保存为 'output2.xlsx'")

代码解析

  1. 读取数据:

    python 复制代码
    df = pd.read_excel('输入数据.xlsx', header=None, engine='openpyxl')

    使用 pd.read_excel() 来读取 Excel 文件。在这个例子中,假设文件没有表头,因此设置 header=None

  2. 分割列:

    python 复制代码
    df[4] = df[4].str.split(',')

    假设第五列(即索引为 4 的列)需要进行分割。我们使用 str.split(',') 方法将该列的每个单元格按逗号分割成多个元素。

  3. 展开列:

    python 复制代码
    df_expanded = df.explode(4, ignore_index=True)

    使用 explode() 函数将第五列的列表元素展开为多行,每一行对应列表中的一个元素。

  4. 去除空格:

    python 复制代码
    df_expanded[4] = df_expanded[4].str.strip()

    对展开后的列进行清理,去除多余的空格。

  5. 进一步分列:

    python 复制代码
    df_expanded[['分列1', '分列2']] = df_expanded[4].str.split(' ', n=1, expand=True)

    将经过清理的第五列按空格分割为两列,并分别命名为"分列1"和"分列2"。这里我们指定 n=1,确保只按第一个空格进行分割。

  6. 删除原始列:

    python 复制代码
    df_expanded = df_expanded.drop(columns=[4])

    删除原始的第五列,以确保数据格式的整洁。

  7. 转换数据格式:

    python 复制代码
    df_expanded[0] = df_expanded[0].astype(str)
    df_expanded[1] = df_expanded[1].astype(str)
    df_expanded[2] = df_expanded[2].astype(str)
    df_expanded[3] = df_expanded[3].astype(str)

    将前四列的数据转换为字符串格式,以避免格式不一致。

  8. 保存结果:

    python 复制代码
    df_expanded.to_excel('output2.xlsx', index=False, header=False, engine='openpyxl')

    最后,将处理后的数据保存为新的 Excel 文件。这里我们指定不保存索引和表头,保持数据格式简洁。

结果

处理完成后,新的 Excel 文件 output2.xlsx 中包含了处理后的数据,其中原来的第五列被分割并展开为新的列

下面提供一个输入数据的示例,并展示经过处理后的输出数据。

输入数据 (输入数据.xlsx)

假设输入数据是一个没有表头的 Excel 文件,内容如下:

列1 列2 列3 列4 列5
A B C D 1, John Doe
E F G H 2, Jane Smith
I J K L 3, Alice Brown
M N O P 4, Bob White

其中,第五列的数据需要被分割和展开。该列中的内容为由逗号和空格分隔的姓名,接下来对其进行分割

处理步骤
  1. 将第五列按逗号 , 分割成多个元素。
  2. 使用 explode 将分割后的元素展开为多行。
  3. 去除空格,并根据空格进一步将名字和姓氏拆分为两个新的列。
输出数据 (output2.xlsx)

处理后的数据如下:

列1 列2 列3 列4 分列1 分列2
A B C D 1
A B C D John Doe
E F G H 2
E F G H Jane Smith
I J K L 3
I J K L Alice Brown
M N O P 4
M N O P Bob White
说明
  • 第五列被分割并展开:输入数据中的第五列(如 "1, John Doe")被按逗号分割后,展开为多行。每行包含一个数字和一个名字。
  • 进一步分割姓名:展开后的每一行,姓名(如 "John Doe")被按空格分成了两列:"分列1" 为名字,"分列2" 为姓氏。
  • 结果保存 :最终的结果被保存为新的 Excel 文件 output2.xlsx
相关推荐
开开心心就好16 分钟前
高效Excel合并拆分软件
开发语言·javascript·c#·ocr·排序算法·excel·最小二乘法
且慢.58917 分钟前
Python_day47
python·深度学习·计算机视觉
佩奇的技术笔记25 分钟前
Python入门手册:异常处理
python
大写-凌祁34 分钟前
论文阅读:HySCDG生成式数据处理流程
论文阅读·人工智能·笔记·python·机器学习
爱喝喜茶爱吃烤冷面的小黑黑1 小时前
小黑一层层削苹果皮式大模型应用探索:langchain中智能体思考和执行工具的demo
python·langchain·代理模式
Blossom.1182 小时前
使用Python和Flask构建简单的机器学习API
人工智能·python·深度学习·目标检测·机器学习·数据挖掘·flask
Love__Tay3 小时前
【学习笔记】Python金融基础
开发语言·笔记·python·学习·金融
有风南来3 小时前
算术图片验证码(四则运算)+selenium
自动化测试·python·selenium·算术图片验证码·四则运算验证码·加减乘除图片验证码
wangjinjin1803 小时前
Python Excel 文件处理:openpyxl 与 pandas 库完全指南
开发语言·python
Yxh181377845544 小时前
抖去推--短视频矩阵系统源码开发
人工智能·python·矩阵