需要将多个csv文件写入新文件夹

时间:2014-04-14 19:20:23

标签: python csv pandas transpose

我在这里找不到关于此主题的任何信息,非常感谢您的帮助!我对python很陌生,但这就是我所拥有的。

我在一个文件夹中有多个文件,想要读取它们,转置它们,然后将它们重写到一个新文件夹中。我想我已经做好了一切,但无法弄清楚如何重写一切。

这是我的代码:

path = 'C:\Users\Christopher\Documents\Clemson\Pleurodires\stability data\Es03\fixed\processed'
filenames = glob.glob(path + "/*.csv")
for filename in filenames:
    dfs = (pd.read_csv(filename))
    df = dfs.transpose()
    df.to_csv('transposed\' + 'Tr_' + filename)

最后一行(我希望)应该将所有新文件放在名为' transposed'的文件夹中,在最初加载的名称前添加一个Tr_(即文件名是&# 39;你好,现在它将在转置的文件夹内“Tr_hello”。

当我运行上面的代码时发生的事情是它说它有效,但文件不会存在于我的计算机的任何地方。我尝试过各种不同的方式让df.to_csv工作,这是我最接近的

修改

感谢大家的帮助,我最后结合了Nanashi和EdChun的代码来实现这一点,这有效:(最终文件位于正确的文件夹中,并且叫做Tr_filename)

path = r'C:\Users\Christopher\Documents\Clemson\Pleurodires\stability data\Es03\fixed\processed'
filenames = glob.glob(path + "/*.csv")
for filename in filenames:
    short = os.path.split(filename)
    newfilename = 'Tr_%s' % short[-1]
    #print newfilename
    dfs = (pd.read_csv(filename))
    df = dfs.transpose()
    df.to_csv(os.path.join('transposed', newfilename))

2 个答案:

答案 0 :(得分:1)

一些事情:

  1. filenames = glob.glob(path + "/*.csv") - 除非我错了,这应该是反斜杠,而不是正斜杠。正斜杠主要用于Unix系统等,但绝对不适用于涉及路径名的Windows。

  2. 尝试打印filename。它也将为您提供整条路径。在df.to_csv行,您实际上是在写path + filename + transposed + Tr + filename。您必须隔离特定文件名(使用splitos模块可能有效)。

  3. 我使用的是Ubuntu,所以这可能不会准确应用,但这就是我将如何做到的。

    import pandas as pd
    from glob import glob
    
    path = "/home/nanashi/Documents/Python 2.7/Scrapers/Scrapy/itbooks"
    filenames = glob(path + "/*.csv")
    
    for filename in filenames:
        specname = filename.split("/")[-1]
        print filename
        print specname
        dfs = pd.read_csv(filename)
        df = dfs.transpose()
        df.to_csv("transposed/%s" % specname)
    

    结果:

    /home/nanashi/Documents/Python 2.7/Scrapers/Scrapy/itbooks/realestateau.csv
    realestateau.csv
    /home/nanashi/Documents/Python 2.7/Scrapers/Scrapy/itbooks/itbooks.csv
    itbooks.csv
    [Finished in 0.6s]
    

    转置文件的屏幕截图:

    enter image description here

    如果有帮助,请告诉我们。

答案 1 :(得分:0)

您的代码似乎有多处错误,请尝试以下操作:

import os
path = r'C:\Users\Christopher\Documents\Clemson\Pleurodires\stability data\Es03\fixed\processed'
filenames = glob.glob(path + "/*.csv")
for filename in filenames:
    dfs = (pd.read_csv(filename))
    df = dfs.transpose()
    df.to_csv(os.path.join(r'transposed\Tr_', filename))