Python中如何将多个pandas DataFrame分别导出为不同CSV文件
实现方法
你可以直接在循环内调用pandas内置的to_csv方法实现导出,下面提供两种常用的导出命名规则,按需选择即可:
方案1:基于原TSV文件名生成CSV文件名
适合每个原tsv文件对应一个染色体数据的场景,直接替换原文件后缀为csv作为导出文件名:
import pandas as pd import os ext = ('.tsv') for files in os.listdir(os.getcwd()): if files.endswith(ext): x = pd.read_table(files, sep='\t', usecols=['#Chrom','Pos','RawScore','PHRED']) x.drop_duplicates(subset ="Pos",keep = False, inplace = True) # 生成导出文件名:替换原.tsv后缀为.csv output_filename = files.rsplit('.', 1)[0] + '.csv' # 导出CSV,index=False表示不导出pandas自带的行索引 x.to_csv(output_filename, index=False, encoding='utf-8-sig') # 保留原来的预览逻辑 data_frame=x.head() print(data_frame)
方案2:基于染色体号生成CSV文件名
如果需要统一按染色体编号命名导出文件,可提取DataFrame中#Chrom列的唯一值作为文件名:
import pandas as pd import os ext = ('.tsv') for files in os.listdir(os.getcwd()): if files.endswith(ext): x = pd.read_table(files, sep='\t', usecols=['#Chrom','Pos','RawScore','PHRED']) x.drop_duplicates(subset ="Pos",keep = False, inplace = True) # 取染色体号作为文件名 chrom_num = x['#Chrom'].unique()[0] output_filename = f'chr{chrom_num}_output.csv' x.to_csv(output_filename, index=False, encoding='utf-8-sig') # 保留原来的预览逻辑 data_frame=x.head() print(data_frame)
补充说明
- 如果只需要导出原来打印的前5行数据,把导出语句里的
x替换成data_frame即可 encoding='utf-8-sig'参数是为了兼容Windows系统下打开CSV不会出现乱码,Linux/Mac环境可以去掉该参数
内容的提问来源于stack exchange,提问作者Hctor Alessandro Lpez Hernndez
相关产品推荐
相关产品推荐

