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

时间:2018-05-17 16:27:51

标签: python python-3.x pandas jupyter jupyter-lab

我用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实验室,所以我可以单独下载每个文件,但我真的不想这样做。

2 个答案:

答案 0 :(得分: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 :(得分: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)也是正确的方法。