我在这里找不到关于此主题的任何信息,非常感谢您的帮助!我对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))
答案 0 :(得分:1)
一些事情:
filenames = glob.glob(path + "/*.csv")
- 除非我错了,这应该是反斜杠,而不是正斜杠。正斜杠主要用于Unix系统等,但绝对不适用于涉及路径名的Windows。
尝试打印filename
。它也将为您提供整条路径。在df.to_csv
行,您实际上是在写path + filename + transposed + Tr + filename
。您必须隔离特定文件名(使用split
或os
模块可能有效)。
我使用的是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]
转置文件的屏幕截图:
如果有帮助,请告诉我们。
答案 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))