|
首先,假设你的所有txt文件都是4列,且前3列都是一样的,差别仅在于第4列。
根据你的表述,我对你的需求理解如下:
1. 15个文件夹,每个文件夹下的txt合并到一个文件中。
2. 1中表述的合并到一起的文件输出字段如下:
- 第1个字段|第2个字段|第3个字段|第1个txt的第4个字段|第2个txt的第4个字段|第3个txt的第4个字段|···|第24个txt的第4个字段
复制代码
基于以上假设和对你需求的理解,代码部分修改如下,你同样需要修改文件路径即可:
- import pandas as pd
- import os
- import glob
- def union_sp_files(path):
- # 第一层,获取所有文件夹
- for dirs in os.listdir(path):
- dirpath = os.path.join(path,dirs)
- # 第二层,获取文件夹下的文件名
- df = pd.DataFrame()
- for index,file in enumerate(glob.glob(os.path.join(dirpath,'*.txt'))):
- temp = pd.read_csv(file,sep='\t',header=None,encoding='utf-8',prefix='V')# 这里假设你的文件分隔符为tab,编码方式为utf-8
- temp['file'] = file # 添加一个路径用作后面的拆分
- df = df.append(temp)
- print(file,df.shape,temp.shape)
- df['file'] = df['file'].map(lambda x:str(x).split('\\')[-1])# 获取到文件名
- df['file'] = df['file'].map(lambda x:str(x).split('-')[-3]) # 根据文件名中的00,01,02···23来拆分文件
- print('{}文件夹下的文件合并完成!'.format(dirpath))
- df = df.pivot_table(index=['V0','V1','V2'],columns=['file'],values=['V3']).reset_index()
- df.to_excel(os.path.join(path,'{}.xlsx'.format(index+1)),index=False)
- print('开始写出excel文件,目前进度为{}/24'.format(index+1))
- print('All Done!')
- if __name__ == '__main__':
- path = r'D:\PycharmProjects' # 这里替换为你的文件路径,注意路径中不要有中文
- union_sp_files(path)
复制代码 |
|