【问题标题】:pandas to_csv doesn't output the filepandas to_csv 不输出文件
【发布时间】:2019-01-17 01:27:18
【问题描述】:

我正在使用 jupyter notebook pandas to_csv 不会将数据帧输出到文件。

我尝试使用to_csv通过设置工作目录或指定目录将数据帧输出到csv文件,但它没有创建任何文件。代码运行并没有产生任何错误消息,但是当我打开文件夹时,没有这样的文件。

我尝试了不同的 IO,它确实显示结果已输出。

from io import StringIO

output = StringIO()

a.to_csv(output)

print(output.getvalue())

我得到以下输出:

,a

0,1

1,2

2,3

但同样to_csv('filepath/filename.csv') 不输出任何文件。

PS:我可以使用 read_csv() 读取任何目录中的任何文件。

更新

如果我保存文件 df.to_csv('testfile.csv') 然后执行 pd.read_csv('testfile.csv')

我可以读取文件但在目录中看不到它。

另外,[x for x in os.listdir() if x == 'testfile.csv'] 将列出文件。

【问题讨论】:

  • 试试to_csv('file.csv') 并且只使用相对路径?它应该显示在您的文件夹中
  • 你用的是mac、windows、linux等吗?
  • 我正在使用 Windows。对于 to_csv,我尝试了所有可能的方法。但是现在文件出现在文件夹中。
  • 你试过绝对路径吗?当前目录可能与您想象的不同。
  • 我试过1.绝对目录,2.使用os.chdir()指定目录,3.只使用to_csv('filename.csv')。它在任何情况下都不起作用。

标签: python pandas


【解决方案1】:

我认为问题在于您正在运行 Jupyter Notebook,因此笔记本的“当前目录”可能位于“C:\Users\user_name\AppData...”中的某个位置。

尝试在笔记本中单独运行os.getcwd()。它可能与保存*.ipynb 文件的文件夹不同。所以正如@Chris 在 cmets 中建议的那样:

df.to_csv(os.getcwd()+'\\file.csv')

... 会将您的 csv 发送到 AppData 文件夹中。

您可以change the working directory for the Jupyter notebook,也可以使用完全指定的文件名,例如:

df.to_csv('C:\\Users\\<user_name>\\Desktop\\file.csv')

(注意:当您使用按 shift+enter 时发生的交互式 iPython 执行时,这也让我在 VS-Code 中绊倒了。有趣的是,在 VS-Code 中,如果您使用 ctrl+shift+p 并选择“Python:运行选择...”它在您的默认终端中执行,没有这个问题。)

【讨论】:

    【解决方案2】:

    我在使用 spyder 时遇到了同样的问题。在我的情况下,它是由我使用的互联网安全工具(COMODO)引起的,它以某种方式在沙箱中执行 spyder 并且不允许它写入“正常”目录。相反,它将结果保存到名为 C:VTRoot\HarddiskVolume2\users\ 的文件夹中。您可以尝试使用非常独特的名称 a.to_csv('very_unique_filename.csv') 保存文件,然后在 Windows 资源管理器中搜索该文件名以找到它存储的文件夹。如果原因是这样的工具,更改它的设置可能会有所帮助。

    【讨论】:

    • 实际上我刚刚找到了您推荐的解决方案 - 原来 jupyter notebook 应用程序包含在 C:VTRoot\HarddiskVolume2\users\ 中,所有文件都在那里。如果是 *.py 文件,我们可以在 conmodo 中解锁它,然后它会写入我们喜欢的文件夹。但是,我还没有找到解锁 jupyter notebook 应用的方法。
    【解决方案3】:

    你可能忘记在路径后添加文件名,所以它会将你的文件命名为路径的最后一个字符,你可以在 jupyter 的主页上看到。

    应该是: df.to_csv('path/filename.csv', ....)

    而不是 df.to_csv('path.csv'......)

    【讨论】:

      【解决方案4】:

      也许您无权访问您的输出文件夹。

      首先尝试当前目录,例如to_csv('tmp.csv')

      然后使用ls -l检查目录的所有权。

      【讨论】:

      • 我试过 ls -l 并没有显示应该存在的文件。
      • 你应该在上面的文件夹中使用这个命令,你必须检查你是否有权在文件夹中写入。
      【解决方案5】:

      即使你使用了to_csv,这也会给你一个正常的文档:

      df.to_csv(**'df',** index = False)
      

      确保使用 'df.csv' 这将确保输出 CSV 文件。

      df.to_csv(**'df.csv'**, index = False)
      

      【讨论】:

        【解决方案6】:

        在我的情况下,文件被保存到我的应用程序根文件夹中(如预期的那样)。

        但是我需要重新启动 Jupyter,即使我启用了自动重新加载:

          %load_ext autoreload
        
          %autoreload 2
        

        意思是,重新加载适用于大多数更改,但是当我添加 df.to_csv 直到重新启动 jupyter notebook 时它不起作用

        【讨论】:

          猜你喜欢
          • 2014-02-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-05
          • 2018-10-14
          • 2018-09-30
          • 2017-03-15
          相关资源
          最近更新 更多