我正在使用jupyter笔记本熊猫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']
将列出文件。
答案 0 :(得分:2)
我认为问题在于您正在运行Jupyter笔记本,因此笔记本的“当前目录”可能在“ C:\ Users \ user_name \ AppData ...”中。
尝试在笔记本中自行运行os.getcwd()
。该文件夹可能与保存*.ipynb
文件的文件夹不同。因此,正如@Chris在评论中建议的那样:
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:运行选择...”,它将在您的默认终端中执行,而不会出现此问题。)
答案 1 :(得分:2)
即使您使用过 to_csv
,这也会为您提供一个普通文档:
df.to_csv(**'df',** index = False)
确保使用“df.csv”,这将确保输出 CSV 文件。
df.to_csv(**'df.csv'**, index = False)
答案 2 :(得分:1)
您可能忘记了在路径后添加文件名,因此它将文件命名为路径的最后一个字符,您可以在jupyter的主页上看到它。
应为: df.to_csv('path / filename.csv',....)
而不是 df.to_csv('path.csv'......)
答案 3 :(得分:1)
我在使用spyder时遇到了同样的问题。在我的情况下,这是由我使用的Internet安全工具(COMODO)引起的,该工具以某种方式在沙盒中执行了间谍程序,并且不允许其写入“正常”目录。而是将结果保存到名为C:VTRoot \ HarddiskVolume2 \ users \的文件夹中。您可以尝试保存一个名称非常独特的文件a.to_csv('very_unique_filename.csv'),然后在Windows资源管理器中搜索该文件名,以找到该文件所在的文件夹。如果原因是类似这样的工具,更改其设置可能会有所帮助。
答案 4 :(得分:0)
也许您无权访问输出文件夹。
首先尝试使用当前目录,例如to_csv('tmp.csv')
。
然后使用ls -l
检查目录的所有权。
答案 5 :(得分:0)
就我而言,文件已保存到我的应用程序根文件夹中(如预期)。
但是即使我启用了自动重新加载,我也需要重新启动 Jupyter:
%load_ext autoreload
%autoreload 2
意思是,重新加载适用于大多数更改,但是当我添加 df.to_csv 时它不起作用,直到重新启动 jupyter notebook