使用动态命名导出多个csv文件

问题描述 投票:1回答:2

我用Python创建了大约200个csv文件,现在需要全部下载。

我使用以下命令从单个文件创建文件:

g = df.groupby("col")
for n,g in df.groupby('col'):
    g.to_csv(n+'stars'+'.csv')

当我尝试使用同一个语句导出到我的机器时,我得到一个语法错误,我不确定我做错了什么:

g = df.groupby("col")
for n,g in df.groupby('col'):
    g.to_csv('C:\Users\egagne\Downloads\'n+'stars'+'.csv'')

错误:

  File "<ipython-input-27-43a5bfe55259>", line 3
    g.to_csv('C:\Users\egagne\Downloads\'n+'stars'+'.csv'')
                                                 ^
SyntaxError: invalid syntax

我在Jupyter实验室,所以我可以单独下载每个文件,但我真的不想这样做。

python python-3.x pandas jupyter jupyter-lab
2个回答
2
投票

你可能混合了整数和字符串,无论如何在文字中使用反斜杠是危险的。考虑使用以下内容

import os

在循环内

    f_name = os.path.join('C:', 'users', ' egagne', 'Downloads', str(n), 'stars.csv')
    g.to_csv(f_name)

os.path.join为您照顾反斜杠。


1
投票

g.to_csv('C:\Users\egagne\Downloads\'n+'stars'+'.csv'')需要是g.to_csv('C:\\Users\\egagne\\Downloads\\'+n+'stars.csv')

有两个错误 - 反斜杠是一个转义字符,所以如果你把'放在它后面,它将被视为你的字符串的一部分而不是你想要的结束语。使用\\而不是单个\会转义转义字符,以便您可以在字符串中包含反斜杠。

此外,您没有正确配对报价。 n是一个变量名,但是从你问题中的语法高亮显示它很明显它是字符串的一部分。同样地,你可以看到stars.csv没有突出显示为字符串的一部分,而结束的''应该是一个出现问题的红旗。

编辑:我解决了导致问题的原因,但是Ami Tavory的答案是正确的 - 尽管你知道这将在Windows上运行,但更好的做法是使用os.path.join()和目录名,而不是在字符串中写出路径。如果你完全不确定n的类型,str(n)也是正确的方法。

© www.soinside.com 2019 - 2024. All rights reserved.