Python 批量合并csv文件
一、批量合并csv文件《方法1》
import pandas as pd
import glob
import os # 获取所有CSV文件的路径
file_paths = glob.glob("C:\\Users\\Admin\\Desktop\\数据核对\\*.csv")
# 使用glob.glob函数获取指定目录下所有以.csv为扩展名的文件路径,并将结果存储在file_paths列表中 print(file_paths) # 打印出这些文件路径供你检查 # 创建一个空的 DataFrame
df = pd.DataFrame()
# 创建一个空的DataFrame,用于存储合并后的数据 # 逐个读取每个CSV文件,并将其添加到DataFrame中
for file_path in file_paths:
# 读取CSV文件并添加文件名为一列
temp_df = pd.read_csv(file_path, encoding='gbk')
# 使用pd.read_csv函数读取CSV文件,encoding参数指定了文件的编码格式,这里使用GBK编码
file_name = os.path.basename(file_path)
print(file_name)
# 使用os.path.basename函数获取文件名(包含扩展名)
temp_df['file_name'] = file_name
# 将文件名作为新的一列添加到temp_df中
df = df.append(temp_df, ignore_index=True)
# 使用df.append函数将temp_df合并到主DataFrame df中,ignore_index=True表示重新设置行索引 # 将DataFrame写入新的CSV文件中
df.to_csv("C:\\Users\\Admin\\Desktop\\合并数据.csv", index=False)
# 使用df.to_csv函数将合并后的数据保存为新的CSV文件,index=False表示不保存行索引
二、批量合并csv文件 多文件编码格式《方法2》
import pandas as pd
import glob
import os # 使用glob.glob函数获取指定目录下所有以.csv为扩展名的文件路径,并将结果存储在file_paths列表中
file_paths = glob.glob("C:\\Users\\Admin\\Desktop\\数据核对\\*.csv") # 创建一个空的DataFrame,用于存储合并后的数据
df = pd.DataFrame() # 循环遍历每个CSV文件,并将其添加到DataFrame中
for file_path in file_paths:
# 尝试使用不同的编码格式读取CSV文件,直到成功为止
for encoding in ['utf-8', 'gbk', 'gb2312', 'utf-16', 'iso-8859-1']:
try:
# 使用pd.read_csv函数读取CSV文件,encoding参数指定了文件的编码格式
temp_df = pd.read_csv(file_path, encoding=encoding)
break # 如果成功读取,则跳出循环
except UnicodeDecodeError: # 如果出现编码错误,则捕获该错误,并继续尝试下一个编码格式
continue
else: # 如果没有任何编码格式成功读取CSV文件,则打印一条错误消息,并继续处理下一个文件
print(f"无法读取CSV文件:{file_path}")
continue # 使用os.path.basename函数获取文件名(包含扩展名)
file_name = os.path.basename(file_path) # 将文件名作为新的一列添加到DataFrame中
temp_df['file_name'] = file_name # 使用df.append函数将temp_df合并到主DataFrame df中,ignore_index=True表示重新设置行索引
df = df.append(temp_df, ignore_index=True) # 使用df.to_csv函数将合并后的数据保存为新的CSV文件,index=False表示不保存行索引
df.to_csv("C:\\Users\\Admin\\Desktop\\合并数据.csv", index=False)
三、批量合并csv文件《方法3》
import os
import pandas as pd # 指定包含CSV文件的文件夹路径
folder_path = "C:\\Users\\Admin\\Desktop\\数据核对" # 获取文件夹中的所有CSV文件
csv_files = [file for file in os.listdir(folder_path) if file.endswith('.csv')] print(csv_files) # 打印出找到的CSV文件列表 # 创建一个空的DataFrame来存储合并后的数据
merged_data = pd.DataFrame() # 遍历所有CSV文件并合并它们
for file in csv_files:
file_path = os.path.join(folder_path, file) # 读取CSV文件,使用GBK编码(GBK是一种常见的中文字符编码)
df = pd.read_csv(file_path, encoding='GBK') # 添加一个新的列,用于标识数据来自哪个CSV文件
df['SourceFile'] = file # 合并数据,将当前CSV文件的数据追加到已合并的数据中
merged_data = merged_data.append(df, ignore_index=True) # 将合并后的数据保存为一个新的CSV文件,指定index=False以避免保存索引列
merged_data.to_csv("C:\\Users\\Admin\\Desktop\\合并数据.csv", index=False) # 打印完成消息
print('CSV文件合并完成并保存为合并数据.csv')
四、合并多种不同编码格式的csv文件
import os
import pandas as pd
import chardet def merge_csv_files(folder_path,output_path):
# 获取文件夹中的所有CSV文件
csv_files = [file for file in os.listdir(folder_path) if file.endswith('.csv')]
print(csv_files)
# 创建一个空的DataFrame来存储合并后的数据
merged_data = pd.DataFrame() # 遍历所有CSV文件并合并它们
for file in csv_files:
file_path = os.path.join(folder_path, file) # 使用 chardet.detect 函数检测文件编码格式
with open(file_path, 'rb') as f:
result = chardet.detect(f.read())
encoding = result['encoding'] # 读取CSV文件,指定检测到的编码格式
df = pd.read_csv(file_path, encoding=encoding) if "YYFX_OrderList" in file_path:
df.insert(12, 'NewColumnName', df.iloc[:, 11])
# 添加一个新的列,用于标识数据来自哪个CSV文件
df['SourceFile'] = file # 合并数据,将当前CSV文件的数据追加到已合并的数据中
merged_data = merged_data.append(df, ignore_index=True) # 将合并后的数据保存为一个新的CSV文件,指定index=False以避免保存索引列
merged_data.to_csv(output_path, index=False)
print("已将所有CSV文件合并为一个文件:合并数据.csv") folder_path = "C:\\Users\\Admin\\Desktop\\数据核对"
output_path = "C:\\Users\\Admin\\Desktop\\数据核对\\数据汇总.csv"
merge_csv_files(folder_path,output_path)
Python 批量合并csv文件的更多相关文章
- 使用Python批量合并PDF文件(带书签功能)
网上找了几个合并pdf的软件,发现不是很好用,一般都没有添加书签的功能. 又去找了下python合并pdf的脚本,发现也没有添加书签的功能的. 于是自己动手编写了一个小工具,使用了PyPDF2. 下面 ...
- Python批量处理CSV文件
#encoding: utf-8 __author__ = 'DELL' import csv import glob import datetime import sys import os rel ...
- Python批量合并处理B站视频
最近想学习后端,又不想花钱,怎么办呢?于是在手机端B站(哔哩哔哩)上面找到了满意的免费视频教程,但是手机端看起来很不方便啊.于是,我通过在手机端缓存下来后,导入到了电脑端,但是我后面了发现两个问题: ...
- python在处理CSV文件时,字符串和列表写入的区别
概述 Python在处理CSV文件时,如果writerow的对象是<type 'unicode'>字符串时,写入到CSV文件时将会出现一个字符占一个单元格的情况: 但是将字符串转换为列表类 ...
- 使用ffmpeg批量合并flv文件
title: 使用ffmpeg批量合并flv文件 toc: false date: 2018-10-14 16:08:19 categories: methods tags: ffmpeg flv 使 ...
- python批量处理压缩文件
python批量处理压缩文件 博客小序:在数据的处理中,下载的数据很有可能是许多个压缩文件,自己一个一个解压较为麻烦,最近几日自己在处理一次下载的数据时,遇到大量的压缩数据需要处理,于是利用pytho ...
- python批量运行py文件
import os path="E:\\python" #批量的py文件路径 for root,dirs,files in os.walk(path): #进入文件夹目录 for ...
- python中操作csv文件
python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...
- Python:使用pymssql批量插入csv文件到数据库测试
并行进程怎么使用? import os import sys import time def processFunc(i): time.sleep(10-i) print i if __name__= ...
- python脚本-excel批量转换为csv文件
pandas和SQL数据分析实战视频教程 https://study.163.com/course/courseMain.htm?courseId=1006383008&share=2& ...
随机推荐
- Power BI 7 DAY
DAX 表达式(Data Analysis Expressions) DAX表达式的结果应用在数据透视表中 DAX表达式的结果作用于整列或者表中所有行 还需注意以下几点: a. 表名用"'' ...
- JS Leetcode 530. 二叉搜索树的最小绝对差 题解分析,再次了解中序遍历
壹 ❀ 引 本题来自LeetCode 783. 二叉搜索树节点最小距离,题目描述如下: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 . 示例 1: 输入:root ...
- NC14685 加边的无向图
题目链接 题目 题目描述 给你一个 n 个点,m 条边的无向图,求至少要在这个的基础上加多少条无向边使得任意两个点可达~ 输入描述 第一行两个正整数 n 和 m . 接下来的m行中,每行两个正整数 i ...
- 2024年,提升Windows开发和使用体验的实践经验 - RIME输入法
前言 上一篇文章介绍了 Windows 下的包管理器,本文继续介绍输入法. 事实上 Windows 的输入法生态比 Linux/Mac 丰富很多,不过很多国产输入法存在窃取隐私.植入广告.乱安装流氓软 ...
- 开源神器:自动生成随机 mock 数据测试对象
测试的痛点 大家好,我是老马. 每一位开发者大部分工作都是写代码.测试代码.修BUG. 我们有很多测试代码,总是花费大量的实践去构建一个对象. 于是就在想,能不能自动填充一个对象呢? 于是去 gith ...
- OCR 01: EasyOCR
Catalog OCR 01: EasyOCR OCR 02: Tesseract-OCR OCR 03: PaddleOCR Related Links Official site with onl ...
- dp题单——区间dp
一.基本概念 1.链式区间dp for(int len = 2; len <= n; len++){ //枚举区间长度 for(int i = 1; i + len - 1 <= n; i ...
- 麒麟系统开发笔记(九):在国产麒麟系统上搭建宇视摄像头SDK基础环境Demo
前言 国产麒麟系统开发上,使用宇视摄像头,本篇使用宇视官网的提供的SDK,搭建基础的国产系统上宇视摄像头SDK开发化境Demo. 效果演示 宇视SDK下载 CSDN粉丝0积分下载 ...
- HttpClient实现https调用
在HttpClient 4.x版本中引入了大量的构造器设计模式 https请求建立详解 首先建立一个信任任何密钥的策略.代码很简单,不去考虑证书链和授权类型,均认为是受信任的: class AnyTr ...
- linux服务器文件实时同步
linux服务器文件实时同步 1 背景说明 在做系统集群部署时,涉及到两个或多个服务器之间文件同步.在软件层面linux服务环境找到以下两种同步方式 利用linux NFS功能将网络共享文件挂载成本地 ...