原创 使用pandas读取表格数据并进行单行数据拼接

发布时间:2021-06-24 16:24:06 浏览 581 来源:猿笔记 作者:gxcuizy

    一个几十万条数据的Excel表格,现在需要拼接其中某一列的全部数据为一个字符串:例如下面简短的几行表格数据,并且每个单元格数据都用单引号包含,需要拼接成字符串`'22',###多行文本批量处理,我们会遇到需要同时处理多行文本的情况,很多文本编辑器都支持批量操作多行文本:1.选中需要操作的多行,反复按`CTRL+D`即可继续向下同时选中下一个相同的文本进行同时编辑。按下`Alt+F3`即可一次性选择全部的相同文本进行同时编辑,可能会存在一些表格数据处理的情况,订单号呀、产品ID啊、商品SKU等,需要你协助导出这些数据里的明细数据以便他们做分析用。


    # # #业务要求

    对于一个包含数十万个数据的Excel表,需要将一列中的所有数据拼接成一个字符串,例如下面几行简短的表数据:

    |id|code|price|num|

    |---|---|---|---|

    |11|22|33|44|

    |22|33|44|55|

    |33|44|55|66|

    |44|55|66|77|

    |55|66|77|88|

    |66|77|88|99|

    现在这一列` code `需要用逗号`、`拼接成字符串,每个单元格数据都包含在单引号中,所以需要拼接成字符串` 22 '、` 33 '、` 44 '、` 55 '、` 66 '、` 77 '。我们如何处理这种情况?当然有很多方法…

    # # #多行文本批处理

    有时,我们会遇到需要同时处理多行文本的情况。许多文本编辑器支持多行文本的批处理操作。这里,我主要讲讲‘升华文字’。以下是操作的快捷键。如果需要,你可以尝试使用它们。真的很方便。

    1.选择要操作的多行,并按` Ctr+Shift+L `同时编辑这些行

    2.用鼠标选择文本,并重复按“CTRL+D”继续选择下一个相同的文本进行同时编辑

    3.用鼠标选择文本,然后按“Alt+F3”一次选择所有相同的文本,以便同时编辑

    # # #如何节省效率

    在工作中,可能会有一些形式的数据处理。例如,该操作会给你一个包含类似项目的表单:订单号、产品标识、商品SKU等。,您需要帮助导出这些数据中的详细数据,以便他们做分析。有一两次可以用上面的方式快速处理,但是这种方式可能会卡在大文本的处理上,操作效率低。如果文字小,还是很方便的。

    如果多次出现这种情况,要不要制作一个工具快速处理?也就是我们可以写一个小工具来实现这种同格式数据的批量拼接,快捷省事,可以大大减少重复工作的消耗。

    ###pandas读取表格数据并处理

    在这种情况下,我们使用熊猫“Python的模块”读取表格中指定的一列数据,然后根据我们的拼接格式进行循环处理,最后将拼接后的字符串写入文本文件,方便保存和使用拼接后的数据。

    sheet=pandas.read_excel(io=file_name,usecols=[line_num])

    data=sheet.values.tolist()

    str_data=''

    #循环处理数据

    print_msg('已获取列数据条数['+str(len(data))+'],开始处理数据……')

    forxinrange(len(data)):

    ifstr(data[x][0])!='nan':

    str_data+="'"+str(data[x][0])+"',"

    # # #完整的源代码

    因为脚本需要多次使用,针对不同文件的不同列,我们可以直接使用这个脚本来完成我们的数据拼接,不需要修改任何代码。同时,我们还可以使用pyinstaller '模块将脚本打包成` exe '窗口可执行文件,可以在没有Python的运行环境中使用'。打包命令是:` pyinstaller-f-IFA vicon . icojoin _ excel _ data . py ',我已经打包上传到交友网站Github了'。如果有兴趣,可以点击查看。创建朋友的地址:

    #!/usr/bin/envpython

    #-*-coding:utf-8-*-

    """

    Excel表格单行数据拼接及文字书写

    author:gxcuizy

    time:2021-03-01

    """

    importpandas

    importrandom

    importos

    importtime

    defprint_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”):')

    #确定文件是否存在

    ifos.path.exists(file_name)==False:

    print_msg('文件不存在')

    os.system("pause")

    exit(0)

    #确定输入的行数是否为数字

    ifline_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))+'],开始处理数据……')

    forxinrange(len(data)):

    ifstr(data[x][0])!='nan':

    str_data+="'"+str(data[x][0])+"',"

    #写入文本文件

    print_msg('数据处理完毕,开始写入……')

    random_num=random.randint(1000,9999)

    withopen('str_'+str(random_num)+'.txt','w')asf:

    f.write(str_data.strip(','))

    print_msg('数据写入完毕.')

    exceptExceptionaserr_info:

    #异常信息

    print_msg(str(err_info))

    #防止exe程序执行结束闪烁

    os.system("pause")

    ###最后

    如果你有其他好玩又好用的,欢迎大家一起分享,学习,交流。顺便说一句,如果有不对的地方,请指出来。我会更加努力学习,争取进步。希望和你一起进步。谢谢你。

作者信息

gxcuizy [等级:3] 搬砖的
发布了 45 篇专栏 · 获得点赞 299 · 获得阅读 46608

相关推荐 更多