「技巧1/100」批量提取数据中指定列并输出到文件

工具&环境
Spyder version: 5.1.5 None
Python version: 3.7.9 64-bit
Operating System: Windows 10
说明:数据为自动生成,可根据自己实际数据套用程序


引言

又是一年,师姐马上毕业 。
工作交接,半成品的数据分析结果留下一大堆 。
其中有一部分数据长这样:
有N个CSV文件,每个文件中有超50万行,N列数据 。


「技巧1/100」批量提取数据中指定列并输出到文件



「技巧1/100」批量提取数据中指定列并输出到文件



需求

获取N个格式相同文件中指定的某(几)列,如上述数据中B列(学号) , C列(评分),并生成各自相应文件如下:


「技巧1/100」批量提取数据中指定列并输出到文件



代码实现



# -*- coding: utf-8 -*-"""Created on Wed Apr6 11:11:00 2022@author: gaopu"""import pandas as pdimport datetimeimport csvimport osdir= "文件所在路径" #指定读取文件列--- 0:第1列 1:第2列select_col=[1,2]excel_list = [os.path.join(dir, i) for i in os.listdir(dir) if i.endswith('.csv')]for file_path in excel_list:start_time = datetime.datetime.now()file_info =pd.read_csv(file_path,usecols=select_col)#file_info = pd.read_table(file_path,usecols=select_col)file_info.to_csv(file_path "filter.txt",index=False, sep="t", quoting=csv.QUOTE_NONE,header=True)print(datetime.datetime.now()-start_time)


核心代码讲解

1、子文件获?。ㄉ秆≈付ㄎ募?
endswith('.csv')
这里'.csv'可以更换其他 , 如:'.txt'
excel_list = [os.path.join(dir, i) for i in os.listdir(dir) if i.endswith('.csv')]
2、读取文件内容,指定某(几)列
如果第一步为过滤使用了'.txt'
那么,


file_info =pd.read_csv(file_path,usecols=select_col)


pd.read_csv需要修改成pd.read_table


3、select_col=[1,2]
数组中1,2是列索引(角标),从0开始为第一列,依次递增 。
如果想要获取第4、6、7列,那么这里改成[3,5,6]即可



结果:
我在代码中添加了时间戳计算 , 可以看出每个文本处理时间0.8s左右,速度可以接受 。


「技巧1/100」批量提取数据中指定列并输出到文件



文件输出:


file_info.to_csv(file_path "filter.txt",index=False, sep="t", quoting=csv.QUOTE_NONE,header=True)
第1个参数是文件输出路径和名称,
sep="t"参数是列之间数据以制表符分割,此处可更改为自己特定分隔符 。


「技巧1/100」批量提取数据中指定列并输出到文件



上面代码可以直接拿来即用哟!


文末

【「技巧1/100」批量提取数据中指定列并输出到文件】天下事有难易乎?为之 , 则难者亦易矣;不为,则易者亦难矣 。人之为学有难易乎?学之,则难者亦易矣;不学,则易者亦难矣 。——彭端淑《为学一首示子侄》

相关经验推荐