【问题标题】:How to loop through directory and edit every dataframe then save new files如何遍历目录并编辑每个数据框然后保存新文件
【发布时间】:2022-01-21 13:18:35
【问题描述】:

我有一个包含 >100 个文件的目录,我想使用 python 编辑所有这些文件。我知道如何在单个文件上执行此操作,但我不知道如何循环它。所有文件都是制表符分隔的。编辑后,我想将输出保存到一个新文件中,就像我为一个文件所做的那样。

对于一个文件:

df1 = pd.read_csv('file1.txt',sep='\t')
df1['aminoacidscut'] = df1['aminoacids'].str[1:-1]
df1['aminoacidscut'] = df1["aminoacidscut"].str.replace("_","", regex=False)
df1['aminoacidscut'] = df1["aminoacidscut"].str.replace("*","", regex=False)

df2 = df1["aminoacidscut"]
df2.to_csv("file1-cut.txt", header=None, index=None, sep=' ', mode='a')

我尝试循环,但这不起作用:

import os, re

directory = os.listdir('/output')
os.chdir('/output')

for file in directory:
    open_file = open(file,'r')
    read_file = open_file.read() 
    file['aminoacidscut'] = file['aminoacids'].str[1:-1]
    file['aminoacidscut'] = file["aminoacidscut"].str.replace("_","", regex=False)
    file['aminoacidscut'] = file["aminoacidscut"].str.replace("*","", regex=False)
    write_file = open(file,'w')
    write_file.write(read_file)

【问题讨论】:

  • 不清楚你想在这里做什么。你的代码不可能工作(例如,file['aminoacidscut'] 会导致 TypeError)。您是否尝试重命名文件或修改其内容?

标签: python pandas dataframe


【解决方案1】:

这应该可行:

import os
import glob
import pandas as pd

fmask = '/path/to/excel_files_dir/*.txt*'
target_dir = '/path/to/'
target_fname = '/path/to/result.txt'

dfs = []
for f in glob.glob(fmask):
    df = pd.read_csv(f, sep='\t')
    df.to_csv(os.path.join(target_dir, os.path.basename(f)),
                index=False)
    dfs.append(df)

# save concatenated
pd.concat(dfs, ignore_index=True).to_csv(target_fname, index=False)

【讨论】:

  • 成功了,非常感谢!
猜你喜欢
  • 2018-04-07
  • 2021-02-07
  • 1970-01-01
  • 1970-01-01
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-09
相关资源
最近更新 更多