python 合并不同文件夹下名称相同的文件

2023-11-09

转载:https://blog.csdn.net/qq_42769683/article/details/104565285?utm_source=app&app_version=4.10.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

1.目的:将不同文件夹下具有相同文件名称的文件进行合并,并保证文件中第一行标题不重复(按行整合)。

代码:

import pandas as pd
import os

def merge_data(id):
    base = 'path to Excel file/'  #大文件夹,注意最后的/
    dir_names = os.listdir(base) # 打开大文件夹后的各个小文件夹名dir_names
    df_all = pd.DataFrame()
    for dir in dir_names:  #遍历每一个小文件夹
        file_path = base+dir
        file_names = os.listdir(file_path)  #打开小文件夹后每一个excel文件的名称
        for file in file_names:  #遍历小文件夹里的每一个文件
            file_name = file_path+'/'+file
 
            if file.split('.')[0] == id:
                    df = pd.read_excel(file_name)
                   # df_all = df_all.append(df)
                    df_all = df_all.append(df,ignore_index=True)#索引重新排序
    return df_all

if __name__ == '__main__':
    
    base = 'path to excel file/'
    dir_names = os.listdir(base)
    ids = set()  # set()可以看做一个列表,这里面不包含重复的元素,不可以使用索引
    for dir in dir_names:
        file_path = base+dir
        file_names = os.listdir(file_path)
        for file_name in file_names:
            id = file_name.split('.')[0]  #id表示这一个股票的代码
            ids.add(id)  #把所有id放入ids中,这样不会有重复的id存在
    for id in ids:
        df = merge_data(id)
        base = 'path to save file/'  #存放合并后的文件路径
        id_path = base + id + '.xlsx'
        df.to_excel(id_path)

2.更新:将两个不同文件夹下同名文件合并,并且要求合并后的文件包括两个sheet。
代码

import pandas as pd
import os

from pandas import ExcelWriter
writer = ExcelWriter("path to save output excel/output.xlsx")

base = 'path to excel /'  #大文件夹,注意最后的/
dir_names = os.listdir(base) # 打开大文件夹后的各个小文件夹名dir_names
df_all = pd.DataFrame()

for dir in dir_names:  #遍历每一个小文件夹
    file_path = base+dir
    file_names = os.listdir(file_path)  #打开小文件夹后每一个excel文件的名称
    
    for file in file_names:  #遍历小文件夹里的每一个文件
        file_name = file_path+'/'+file
        
        df_excel = pd.read_excel(file_name)
        (_, f_name) = os.path.split(file_name)
        (f_short_name, _) = os.path.splitext(f_name)
        df_excel.to_excel(writer, f_short_name, index=False)

writer.save()

3.更新:将两个不同文件夹同名的文件合并,按列合并成一个sheet

import pandas as pd

import numpy as np

import os

import glob

from os.path import join

#%%
#合并不同文件夹下相同文件名Excel,按列合并

# out file path
outDir = os.path.abspath('save path') 

#one file
imageDir1 = os.path.abspath('file path1')

#define area file variable
image1 = [] #1.txt;2.txt
imgname1 = [] #1;2

#get all .txt file
imageList1 = glob.glob(os.path.join(imageDir1, '*.xlsx'))

#get filename (1.txt;2.txt)
for item in imageList1:
    image1.append(os.path.basename(item))

#get filename(1;2)
for item in image1:
    (temp1, temp2) = os.path.splitext(item)
    imgname1.append(temp1)

#second file 
imageDir2 = os.path.abspath('file path2')
image2 = []
imgname2 = []
imageList2 = glob.glob(os.path.join(imageDir2, '*.xlsx'))

for item in imageList2:
    image2.append(os.path.basename(item))

for item in image2:
    (temp1, temp2) = os.path.splitext(item)
    imgname2.append(temp1)

#f the first file name and sencond file name are the same, the two groups of data are merged 
for item1 in imgname1:
    for item2 in imgname2:
        if item1 == item2:
            
            dir1 = imageList1[imgname1.index(item1)]
            dir2 = imageList2[imgname2.index(item2)]
            
            data1 = pd.read_excel(dir1)
            area = data1
            # print(data)
            name1 = os.path.basename(dir1)
            
            data2 = pd.read_excel(dir2)
            height = data2[0:132].reset_index(drop=True)
            # print(data)
            name2 = os.path.basename(dir2)
            
            data = pd.concat([area,height],axis=1,ignore_index=True)
            pd_data = pd.DataFrame(data)

            pd_data.to_csv(os.path.join(outDir, name1.split('.')[0]+'.csv'))
print('done!')

参考资料:https://blog.csdn.net/weixin_43668299/article/details/97807698

4.快速将一个文件夹下所有csv文件合并为一个文件:copy *.csv all.csv需要手动删除表头。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 合并不同文件夹下名称相同的文件 的相关文章

  • scikit学习逻辑回归方程

    我已经在 iris 数据集上运行了逻辑回归 直到这段代码我才清楚 之后我想形成方程来对测试数据进行评分 该怎么做 我知道我可以使用预测函数对测试进行评分 但是我想查看参数和各自的权重 能否请你帮忙 from sklearn import d
  • ODFPy 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要操作ODF文件格式 开放文档格式 开放办公室的内部格式 我需要用Python来完成 ODFPy
  • 在命令提示符中识别“Pip”,但在 PyCharm 终端中无法识别

    当我尝试在 Windows 命令提示符中运行 pip 时 pip V工作正常 但是当我尝试在 PyCharm 终端中运行它时 我得到 pip is not recognized as an internal or external comm
  • 如何修复错误“错误:命令错误,退出状态 1:python。”尝试使用 pip 安装 django-heroku 时[重复]

    这个问题在这里已经有答案了 我正在尝试使用 pip 安装 django heroku 但它一直遇到错误 我看到一些建议告诉我要确保 Heroku 中的 Python 版本是最新的 我已经这么做了 推送到 Heroku master 后 我运
  • 如何在Python中获得更精确的十进制值[重复]

    这个问题在这里已经有答案了 from math import sqrt a 1e 8 b 10 c 1e 8 x1 b sqrt b 2 4 a c 2 a x2 b sqrt b 2 4 a c 2 a print x1 format x
  • PySerial 和多个 Python 安装出现问题

    我的 Windows 7 计算机上有 Python 2 4 4 和 3 1 3 我想使用 PySerial 听说是内置的 所以我尝试了一下import serial在两个版本中 两者都造成了Import Error 然后我从以下位置下载了w
  • 在python中浏览ftp目录

    我正在尝试使用 ftplib 使用 Python 3 从 ftp 服务器下载多个文件夹 我有一个文件夹名称列表 它们都位于文件夹 root 中 问题是我不知道如何浏览它们 当我使用cwd我可以进入更深的目录 但是如何再次起来呢 我正在尝试得
  • 如何在 Google App Engine 中为模型定义唯一属性?

    我需要一些独特的属性 我怎样才能实现这个目标 有没有类似的东西unique True 我正在使用适用于 Python 的 Google App Engine Google 提供了执行此操作的函数 http code google com a
  • Pandas Dataframe.to_csv 小数=',' 不起作用

    在 Python 中 我正在将 Pandas Dataframe 写入 csv 文件 并希望将小数分隔符更改为逗号 像这样 results to csv D Data Kaeashi BigData ProcessMining Voorbe
  • 在OpenCV Python中编写4通道以上图像

    这对我来说是一个持续的挑战 我正在尝试使用 openCV 将两个 3 RGB 图像组合成一个 6 通道 TIFF 图像 到目前为止我的代码如下 import cv2 import numpy as np im1 cv2 imread im1
  • 如何计算具有较大中间值的总和

    我想计算 for n m两个值都是 1000 以内的整数 最终结果是一个不大于 1000 的数字n但中间值对于 python 来说太大了 无法处理 你怎么解决这个问题 我将函数定义如下 from scipy misc import comb
  • 类型错误:无法连接“str”和“instance”对象(python urllib)

    写一个python程序 我在使用时遇到了这个错误urllib urlopen功能 Traceback most recent call last File ChurchScraper py line 58 in
  • 如何读取 sql 查询到 pandas dataframe / python / django

    我在下面使用这个views py获取应用程序 from django db import connection def test request cursor connection cursor sql SELECT x n from ta
  • 中断QThread睡眠

    我想知道如何暂停 QThread 然后在收到信号时恢复 我已阅读并知道我可以做这样的事情 def run self self ready False while not self ready self sleep 1 QtCore Slot
  • SQL查询中的Python列表作为参数[重复]

    这个问题在这里已经有答案了 我有一个 Python 列表 比如说 l 1 5 8 我想编写一个 SQL 查询来获取列表中所有元素的数据 例如 select name from students where id IN THE LIST l
  • Django 中同一个模型的多个多对多关系

    给定以下具有两个多对多关系的模型 class Child models Model name models CharField max length 80 class Foo models Model bar models ManyToMa
  • 如何下载和使用对象检测数据集(例如 coco 或 pascal)

    我对物体检测领域非常陌生 我想知道是否有人可以帮助我下载和使用对象检测数据集 例如 coco 或 pascal 当我下载数据集后访问他们的网站时 我觉得我不知道应该如何处理它们 我知道这个问题很愚蠢 但是开始的提示可能非常有用 谢谢 我正在
  • 纯Python库读写jpeg格式

    伙计们 我正在寻找 jpeg 写入 阅读会很好 但不是必需的 库的纯 python 实现 我只在以下位置创建了 TonyJPEG 库端口 http mail python org pipermail image sig 2004 Novem
  • 通过 Tweepy 在 Twitter 上更新状态时的回溯

    我一直在尝试使用 Twitter 在 Twitter 上发布我的 Rpi 读数tweepy 但首先我想检查一下是否tweepy本来可以正常工作 但事实并非如此 我正确安装了软件包 但是当我尝试运行简单的代码来发布某些内容时 出现错误 是的
  • 使用 PyCharm 分析 Django

    即使在开发环境中 我的应用程序也相当慢 所以我想找出是什么导致它变慢 以便我可以尝试修复它 我了解调试工具栏 根据它的报告 数据库查询和下载的源都不是问题 所以它一定是业务逻辑 但是 我无法使用 Django 服务器运行 PyCharm 分

随机推荐

  • 解决“unable to access ‘https://github.com...”

    前提 我在操作的时候做了https授权 但是密码输入错误了 再找想改也找不到了 搞半天都会报这个错 甚至我想用秘钥的方式都不行 万恶的git 解决方法 git config global http sslVerify false 然后正常操
  • STM32F103ZET6【HAL函开发】STM32CUBEMX------USART串口实验(DMA)

    printf重定义 需要将下面的代码插入到usart c里面 USER CODE BEGIN 1 if 1 include
  • hive集群安装,连接mysql

    1 linux安装mysql 并且生成hive用户 密码为Abc 123D 权限为所有权限 请看 这点很重要 http blog csdn net qq 21383435 article details 76573955 2 我的hadoo
  • JAVA中的目录指什么_默认情况下,Java listFiles()读取目录中的文件的顺序是什么? - java...

    我编写了以下程序 该程序读取目录中的所有文件 所有文件名均由数字组成 例如10023134 txt File dir new File directoryPath File files dir listFiles for File file
  • 内存管理实战案例分析3:为何分配不出一个页面?

    微信公众号 奔跑吧linux社区本文节选自 奔跑吧Linux内核 第二版卷1第6 3 3章 1 问题描述 下面是有问题的OOM Killer内核日志 其中空闲页面为86048KB 最低警戒水位为22528KB 低水位为28160KB 读者可
  • 如何使用iMazing监督、配置器功能

    监督功能是一种移动设备管理技术 使得Apple设备所有人具有最高管理权 设备受到监督之后 仅仅可以在监督人设定的模式下运行Apple设备 如单应用运行模式 权限限制模式 禁用配对模式等 最近很火的网剧 你安全了吗 就是宣传网络安全的 利用i
  • 【mySQL】MySQL JOIN原理

    MySQL JOIN原理 先看一下实验的两张表 表comments 总行数28856 表comments for 总行数57 comments id是有索引的 ID列为主键 以上两张表是我们测试的基础 然后看一下索引 comments fo
  • Nginx+Keepalived双机热备(主主模式)

    Keepalived介绍 Keepalived是一个基于VRRP协议来实现的服务高可用方案 可以利用其来避免IP单点故障 类似的工具还有heartbeat corosync pacemaker 但是它一般不会单独出现 而是与其它负载均衡技术
  • Mybatis 返回对象中包含 List集合

    遇到这种情况的实体类 需要在mapper xml文件里使用 resultMap标签以及其他子标签 先贴代码 实体类 UserEntity类 private Long id 用户id private String username 用户名 p
  • http请求忽略证书、单向认证、双向认证、连接池范例(httpclient 4.3.x以上版本)

    目录 加载证书单向认证 忽略证书 双向认证 连接池 加载证书单向认证 import org apache http HttpEntity import org apache http client methods CloseableHttp
  • 数据库小白入门最简易版

    一 数据库是什么 数据库的基本概念 1 数据 data 定义 描述事物的符号记录称为数据 不严格的说就是我们平时接触到的一切可视化信息 数据的集合构成了表 表的集合构成了数据库 2 数据库 DB DataBase 定义 是存放数据的仓库 这
  • Linux蓝牙系统(3) Linux 命令

    Linux蓝牙系统 3 Linux 命令 2010 09 27 10 45 44 分类 LINUX Andrew Haung bluedrum 163 com 一 Linux对于蓝牙的支持 参见如下协议图 在HCI界面之上需要软件来实现 1
  • ctf.show web6 sql注入过滤了空格

    ctf show web6 sql注入过滤了空格 开始的页面 是一个登录的页面 随便输入用户名和密码 没有报错之类的 就把账户名和密码都清空了 那就来burpsuit抓包 先用个万能密码 or 1 1
  • 加密 scrapy

    js常见的加密方式 加密在前端开发和爬虫中是经常遇见的 掌握了加密算法且可以将加密的密文进行解密破解的 也是你从一个编程小白到大神级别质的一个飞跃 且加密算法的熟练和剖析也是很有助于帮助我们实现高效的js逆向 下述只把我们常用的加密方法进行
  • Windows服务器怎么才能长时间保持远程桌面不自动断开

    服务器在通过mstsc远程连接后 如果长时间不操作 会自动断开 这种是Windows系统的远程保护机制 但是对于操作服务器来说 这种断开可能会影响到工作效率 那么如何设置才能一直保持连接状态呢 用过Windows自带的远程桌面连接服务可能都
  • Please make sure you have the correct access rights

    使用git克隆 拉取 提交的时候 发现不能操作 提示如下 Please make sure you have the correct access rights fatal Could not read from remote reposi
  • QTP工具简单操作使用说明

    简介 QTP是QuickTest Professional 的简称 是一种自动化测试工具 使用QTP的目的是用它来执行重复的手动测试 主要用于回归测试和测试同一软件的新版本 版本迭代 启动QuickTest 第一次启动QuickTest时
  • go的channel实现归并排序

    func main ch1 create int 1 3 6 待排序的管道1 ch2 create int 2 5 9 待排序的管道2 ch merge ch1 ch2 for c range ch fmt Println c for ru
  • java概述,发展历程

    1 java概述 首先对于刚刚接触java的小白来说 可能连java是什么 为什么叫这么名字都不知道 其实 Java语言是有个曾用名的 叫Oak 而且起这个名字的时候也是很随心的 只是因为看到了窗口外的一颗橡树 歌词 只是因为面向窗外多看了
  • python 合并不同文件夹下名称相同的文件

    转载 https blog csdn net qq 42769683 article details 104565285 utm source app app version 4 10 0 code app 1562916241 uLink