批量提取csv文件某一列,并保持每个csv文件保存为与原文件名对应
题目描述
存在同一文件夹下的csv文件,需要批量提取第四列,然后看第五列重复的话只保留其中一个。由于csv文件是空格分隔的,有时候还会把所有列读成一列
题目来源及自己的思路
单个读取文件是可以读取的,然后批量放进去就提取不出来。报错
相关代码
import os
import pandas as pd
import csv
import codecs
import glob
全局变量,文件读取路径
read_path = ""
处理结果文件输出路径
output_path = ""
获取文件路径
def get_file_path():
read_path = r"E:\python代码\split"output_path = r"E:\python代码\pra"
return read_path,output_path
读取文件名称和内容
def deal_files():
# 获取read_path下的所有文件名称(顺序读取的)files = os.listdir(read_path)
for file_name in files:
# 读取单个文件内容
dfdata = pd.read_csv(read_path+"\\"+file_name,sep='\s+',header=None,names=['a','b','c','d','e','f','g','h','i','j'])
#处理单个文件(调用方法)
finish_dfdata = get_deal_file(dfdata)
# 输出结果到指定路径下
finish_dfdata.to_csv(output_path + "\\" + file_name+'.csv', index=False)
return dfdata,finish_dfdata
print("文件处理完毕")
# 定义字典
aa_codes = {
'ALA':'A','CYS':'C','ASP':'D','GLU':'E','PHE':'F','GLY':'G','HIS':'H','LYS':'K',
'ILE':'I','LEU':'L','MET':'M','ASN':'N',
'PRO':'P','GLN':'Q','ARG':'R','SER':'S',
'THR':'T','VAL':'V','TYR':'Y','TRP':'W'}
def get_deal_file(dfdata):
with open(dfdata, 'r') as csvfile: flag=[]
final=[]
i=0
for i in csvfile:
flag = i.split('\\s+')[0]
# flag.append(i[3])
# flag.append(i[4])
return flag
a=flag.drop_duplicates(subset='e', keep='first', inplace=False)#删除重复的e列只保留第一个
b=a.iloc[:,3]
final.append[b]
# final=pd.DataFrame(columns='amino',data=b)
# flag.append(b)
i=i+1
return final
with open(output_path, "w") as f:
writer = csv.writer(f)
主函数
if __name__=="__main__":
# 获取文件输入和输出路径read_path,output_path = get_file_path()
# 开始处理文件,并输出处理文件结果
deal_files()
你期待的结果是什么?实际看到的错误信息又是什么?
期待将每个文件中的第四列(在保证第五列不重复情况下)存入csv文件,文件名和之前的文件名保持一致
以上是 批量提取csv文件某一列,并保持每个csv文件保存为与原文件名对应 的全部内容, 来源链接: utcz.com/p/938361.html