【发布时间】:2019-11-10 01:55:46
【问题描述】:
我有一个脚本,可以将 SQL db 读取到 pandas 数据帧,然后将其连接在一起以在循环中形成一个数据帧。我需要将第二个数据框写入 csv 文件并从 ID 列表中重命名它
我正在使用 pd.to_csv 来编写文件并使用 os.rename 来更改名称。
for X, df in d.iteritems():
newdf = pd.concat(d)
for X in newdf:
export_csv = newdf.to_csv (r'/Users/uni/Desktop/corrindex+id/X.csv', index = False, header = None)
for X in NAMES:
os.rename ('X.csv',X)
这是将数据帧连接在一起的代码。 在第三个循环中,NAMES = 'rt35' 但将来这将是一个相似名称的列表。
我希望得到一个名为 rt35.csv 的文件。但是我要么得到 r.csv 要么 X.csv 和这个错误:
OSError: [Errno 2] No such file or directory
文件写入正确,唯一的问题是名称。
【问题讨论】:
-
举一个输入数据的例子以及输出应该是什么样子
-
我刚刚认识到,您使用 X 三次作为嵌套 {for} 循环的变量。你有没有试过重命名这些变量,所以它们是不同的(你知道字母表有超过 20 个字母,你不必那么小气 ;-)。然后第二个:调用重命名的循环似乎模棱两可。您想创建具有多个名称的同一文件的副本吗?但是如果 NAMES 是一个固定列表,你知道,只有 csv 才能存活,这是最后创建的。您能否在代码中添加一些 cmets 来解释您打算做什么?
-
如果我理解正确,NAMES 包含字符串 'rt35'。您应该使用 ['rt35.csv'] 因为 in 需要一个列表,如果给定一个字符串,它会将字符串视为字符列表,然后在第一次迭代中产生“r”。您的文件名称为“r”而不是真正的“r.csv”,对吗?然后重命名循环的第二次迭代产生“t”,但是不再有带有“X.csv”的文件可以重命名,这就是你得到 OSError 的原因。如果您希望复制文件,则需要调用另一个函数。
标签: pandas python-2.7 csv