利用pandas将Excel单列数据拼接为带引号逗号分隔字符串

Alice
Alice
发布时间:2026-10-11| 1人浏览过
原创

在处理包含几十万条数据的Excel表格时,常需将某一列(如代码ID)提取并拼接为特定格式的字符串,例如用于SQL语句的 IN 子句。本文介绍利用Python的 pandas 库读取指定列,并通过脚本将数据转换为 'value1','value2',... 格式的方法,提供完整可运行的源码及打包指南。

业务场景与需求分析

当面对包含大量数据的Excel文件时,手动处理单行数据拼接效率极低。常见的业务需求包括:

  • 从包含几十万条记录的Excel中提取特定列的数据。
  • 将提取的每个单元格数据用单引号包裹。
  • 使用逗号作为分隔符,将所有数据拼接为一个长字符串。
  • 最终结果需可直接用于数据库查询或代码生成。

虽然文本编辑器(如Sublime Text)支持通过 Ctrl+Shift+L 或 Alt+F3 进行多行批量编辑,但在处理大规模数据时,编辑器容易卡顿。编写自动化工具不仅能提高效率,还能避免人为操作错误。

核心实现逻辑

使用 pandas 读取Excel文件并处理数据的核心步骤如下:

  1. 读取指定列:使用 pandas.read_excel 并通过 usecols 参数指定需要提取的列索引。
  2. 数据转换:将读取到的Sheet数据转换为列表格式,便于遍历。
  3. 循环拼接:遍历列表,过滤掉空值(nan),并将每个元素转换为字符串,加上单引号和逗号。
  4. 结果输出:将拼接好的字符串写入文本文件。

关键代码片段

以下是处理数据的核心逻辑,展示了如何读取指定列并构建目标字符串:

sheet = pandas.read_excel(io=file_name, usecols=[line_num])
data = sheet.values.tolist()
str_data = ''
# 循环处理数据
print_msg('已获取列数据条数[' + str(len(data)) + '],开始处理数据……')
for x in range(len(data)):
  if str(data[x][0]) != 'nan':
    str_data += "'" + str(data[x][0]) + "',"

注意:上述代码在循环末尾会多出一个逗号,因此在最终写入文件前需使用 strip(',') 去除末尾多余的逗号。

完整工具源码

以下脚本封装了完整的交互流程,包括文件存在性检查、列号合法性验证、数据处理及文件写入。脚本设计为命令行交互模式,并可通过 pyinstaller 打包为独立的可执行文件(exe),以便在无Python环境的机器上运行。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
拼接Excel表格单行数据,并写入文本
author: gxcuizy
time: 2021-03-01
"""

import pandas
import random
import os
import time


def print_msg(msg=''):
  """打印信息"""
  now_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
  print('[' + now_time + '] ' + msg)


# 程序主入口
if __name__ == "__main__":
  # 获取传入参数
  file_name = input('请输入当前目录下的表格文件名(例如“01.xlsx”):')
  line_num = input('请输入要拼装的数据第几列(例如“1”):')
  # 判断文件是否存在
  if os.path.exists(file_name) == False:
    print_msg('文件不存在')
    os.system("pause")
    exit(0)
  # 判断输入的行数是否为数字
  if line_num.isdigit() == False:
    print_msg('请输入列数的数字')
    os.system("pause")
    exit(0)
  try:
    # 获取表格数据
    print_msg('开始获取文件[' + file_name + ']的第[' + str(line_num) + ']列数据')
    line_num = int(line_num) - 1
    sheet = pandas.read_excel(io=file_name, usecols=[line_num])
    data = sheet.values.tolist()
    str_data = ''
    # 循环处理数据
    print_msg('已获取列数据条数[' + str(len(data)) + '],开始处理数据……')
    for x in range(len(data)):
      if str(data[x][0]) != 'nan':
        str_data += "'" + str(data[x][0]) + "',"
    # 写入文本文件
    print_msg('数据处理完毕,开始写入……')
    random_num = random.randint(1000, 9999)
    with open('str_' + str(random_num) + '.txt', 'w') as f:
      f.write(str_data.strip(','))
    print_msg('数据写入完毕.')
  except Exception as err_info:
    # 异常信息
    print_msg(str(err_info))
  # 防止exe程序执行结束闪退
  os.system("pause")

打包与运行指南

为了便于分发和使用,可以将上述Python脚本打包为Windows可执行文件(exe)。确保已安装 pyinstaller 库,然后执行以下命令:

pyinstaller -F -i favicon.ico join_excel_data.py

参数说明:

  • -F:打包为单个可执行文件。
  • -i favicon.ico:指定生成的exe文件的图标(可选)。

打包完成后,生成的exe文件位于 dist 目录下。用户只需双击运行,按照提示输入Excel文件名和列号即可生成结果文件。

注意事项

  • 列号索引:脚本中用户输入的列号从1开始计数,代码内部已自动转换为从0开始的索引(line_num = int(line_num) - 1)。
  • 空值处理:代码显式判断了 'nan' 字符串,跳过Excel中的空单元格,避免拼接出 'nan' 字符串。
  • 文件命名:输出的文本文件名包含随机生成的4位数字,避免多次运行覆盖之前的结果。
  • 依赖环境:运行脚本前需确保Python环境中已安装 pandas 和 openpyxl(pandas读取xlsx所需的引擎)。

以上就是利用pandas将Excel单列数据拼接为带引号逗号分隔字符串的详细内容,更多关于Python数据处理及Excel自动化操作的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。