Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pandas to_csv doesn't output the file

Tags:

python

pandas

I'm using jupyter notebook pandas to_csv doesn't output the dataframe to a file.

I tried to use to_csv to output a dataframe to a csv file by setting the working directory or specify the directory, and it didn't create any file. The code ran and didn't produce any error message, but when I opened the folder, there was no such file.

I tried a different IO, and it did show the result had been output.

from io import StringIO

output = StringIO()

a.to_csv(output)

print(output.getvalue())

I got the following output:

,a

0,1

1,2

2,3

but again to_csv('filepath/filename.csv') doesn't output any file.

PS: I can read any file in any directory using read_csv().

Update

If I save the file df.to_csv('testfile.csv') then do pd.read_csv('testfile.csv')

I can read the file but cannot see it in the directory.

Also, doing [x for x in os.listdir() if x == 'testfile.csv'] will list the file.

like image 845
Li Ai Avatar asked Jan 17 '19 01:01

Li Ai


2 Answers

I think the issue is that you're running a Jupyter Notebook so the "current directory" for the notebook is probably somewhere in "C:\Users\user_name\AppData...".

Try running os.getcwd() on its own in your notebook. It probably won't be the same folder as where the *.ipynb file is saved. So as @Chris suggested in comments, this:

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

... will send your csv into the AppData folder.

You could either change the working directory for the Jupyter notebook, or you could use a fully specified filename like:

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

(Note: this also tripped me up in VS-Code while using the interactive iPython execution that happens when you press shift+enter. Interestingly, in VS-Code, if you use ctrl+shift+p and select "Python: Run selection..." it executes in your default terminal, which doesn't have this problem.)

like image 198
Matt Moehr Avatar answered Sep 23 '22 21:09

Matt Moehr


you probably forgot to add the name of the file after your path, so it will named your file as the last character of your path, which you can see on the home page of jupyter.

should be: df.to_csv('path/filename.csv', ....)

rather than df.to_csv('path.csv'......)

like image 43
Chris Avatar answered Sep 20 '22 21:09

Chris