批量提取csv文件某一列,并保持每个csv文件保存为与原文件名对应

批量提取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

回到顶部