花木成畦手自栽 发表于 2022-4-29 14:29

python多个文件合并特定条件数据行至一个工作表

本帖最后由 花木成畦手自栽 于 2022-4-29 14:31 编辑

工作中,需要汇总门店交上来的多个相同列、格式的EXCEL文档,当然此类程序很多,重点在于只合并某列为特定条件的数据。

例如:A、B、C、D、E五个相同结构EXCEL文件,只要”大小“列为”小“的行数据。

用PYTHON PANDAS写的小程序,也是借鉴于大佬们分享教程,水平有限,大佬勿喷。本着人人为我,我为人人的精神,分享给有需要的小伙伴使用。

import os
import pandas as pd


def merge_data():
    path = os.getcwd() + '\\'+'DATA' #获取EXCEL文件目录
    file_list = os.listdir(path) #获取EXCEL文件列表
    save_path = os.getcwd() + '\\' + 'DATA_合并'+ '\\' + '合并.xlsx' #设置合并后输出目录和文件名

    print("----------开始合并----------")
    df = pd.read_excel(path + '\\'+ file_list) #读取第一个EXCEL文件
    df_temp = df.loc == '值'] #根据某列是为“值”提取成新的DF
    print("添加"+file_list,df_temp.shape,"行,合计:",df_temp.shape,"行") #屏幕显示新DF为多少行,合并后共多少行

    for i in range(1,len(file_list)): #循环第2个~最后一个EXCEL文件
      df1 = pd.read_excel(path + '\\' + file_list)#读取EXCEL文件
      df2 = df1.loc == '否'] #根据某列是为“值”提取成新的DF
      df_temp = pd.concat() #合并2个DF
      print("添加"+file_list,df2.shape,"行,合计:",df_temp.shape,"行") #屏幕显示DF2为多少行,合并后共多少行
    df_temp.to_excel(save_path) #按路径保存文件
    print("----------合并完成----------")

if __name__=='__main__':
    merge_data()

zhaofucheng 发表于 2022-4-29 15:19

直接用import csv还少导入一个库

花木成畦手自栽 发表于 2022-4-29 16:20

zhaofucheng 发表于 2022-4-29 15:19
直接用import csv还少导入一个库

没懂,CSV库什么作用?

xiadongming 发表于 2022-4-29 22:51

1e3e 发表于 2023-3-28 22:08

xlsxwriter.exceptions.FileCreateError: No such file or directory: 'D:\\pandaspython多个文件合并特定条件数据行至一个工作表\\

报错了,怎么回事哈?

1e3e 发表于 2023-3-28 22:15

代码有问题,运行不了的

花木成畦手自栽 发表于 2023-3-29 10:30

1e3e 发表于 2023-3-28 22:15
代码有问题,运行不了的

将'\\'改成'\'试试,可能是版本问题

1e3e 发表于 2023-3-29 12:41

花木成畦手自栽 发表于 2023-3-29 10:30
将'\\'改成'\'试试,可能是版本问题

save_path = os.getcwd() + '\' + 'DATA_合并' + '\' + '合并.xlsx'# 设置合并后输出目录和文件名
                                     ^
SyntaxError: invalid syntax

1e3e 发表于 2023-3-29 12:44

花木成畦手自栽 发表于 2023-3-29 10:30
将'\\'改成'\'试试,可能是版本问题

搞好了,谢谢你的分享
页: [1]
查看完整版本: python多个文件合并特定条件数据行至一个工作表