龙空技术网

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

河农博士 221

前言:

目前兄弟们对“python读取文件指定行”可能比较注意,你们都想要学习一些“python读取文件指定行”的相关内容。那么小编在网摘上汇集了一些关于“python读取文件指定行””的相关资讯,希望兄弟们能喜欢,你们快快来学习一下吧!

工具&环境

Spyder version: 5.1.5 None

Python version: 3.7.9 64-bit

Operating System: Windows 10

说明:数据为自动生成,可根据自己实际数据套用程序

引言

又是一年,师姐马上毕业。

工作交接,半成品的数据分析结果留下一大堆。

其中有一部分数据长这样:

有N个CSV文件,每个文件中有超50万行,N列数据。

需求

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

代码实现

# -*- coding: utf-8 -*-"""Created on Wed Apr  6 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左右,速度可以接受。

文件输出:

file_info.to_csv(file_path+"filter.txt",index=False, sep="\t", quoting=csv.QUOTE_NONE,header=True) 

第1个参数是文件输出路径和名称,

sep="\t"参数是列之间数据以制表符分割,此处可更改为自己特定分隔符。

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

文末

天下事有难易乎?为之,则难者亦易矣;不为,则易者亦难矣。人之为学有难易乎?学之,则难者亦易矣;不学,则易者亦难矣。——彭端淑《为学一首示子侄》

标签: #python读取文件指定行