Pandas to_csv не выводит файл

Я использую jupyter notebook pandas to_csv не выводит фрейм данных в файл.

Я попытался использовать to_csv для вывода фрейма данных в файл csv, установив рабочий каталог или указав каталог, и он не создал никакого файла. Код запустился и не выдал никаких сообщений об ошибках, но когда я открыл папку, такого файла не было.

Я попробовал другой ввод-вывод, и он показал, что результат был выведен.

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') и просто использовать относительный путь? он должен появиться в вашей папке

Primusa 17.01.2019 02:28

вы используете mac, windows, linux и т. д.?

It_is_Chris 17.01.2019 02:34

Я использую windows. Я пробовал все возможные способы для to_csv. Но теперь файл обнаружился в папке.

Li Ai 17.01.2019 02:39

Вы пробовали абсолютный путь? Текущий каталог может отличаться от того, что вы думаете.

busybear 17.01.2019 02:40

Я пробовал 1. абсолютный каталог, 2. использовать os.chdir () для указания каталога, 3. просто использовать to_csv ('filename.csv'). это не сработало ни в коем случае.

Li Ai 17.01.2019 02:42

@LiAi как насчет того, чтобы попробовать df.to_csv(os.getcwd()+'\\file.csv') или df.to_csv(r'some\file\path\file.csv'), вы просматриваете кешированную версию сетевого драйвера?

It_is_Chris 17.01.2019 02:57

Вы обновили выходной каталог?

James Chang 17.01.2019 02:58

@Chris просто попробовал, и оба они не работали. Так странно - никогда раньше такого не испытывал.

Li Ai 17.01.2019 03:13

@LiAi, если вы не получаете сообщение об ошибке, попробуйте прочитать сохраненный файл (даже если вы не видите его в каталоге), чтобы узнать, существует ли он: сначала df.to_csv('testfile.csv'), затем pd.read_csv('testfile.csv')

It_is_Chris 17.01.2019 03:17

@Chris df.to_csv ('testfile.csv'), тогда pd.read_csv ('testfile.csv') работает. Я могу прочитать файл, но не вижу его.

Li Ai 17.01.2019 03:28

@LiAi отображает ли [x for x in os.listdir() if x == 'testfile.csv'] файл в каталоге? Кроме того, поскольку вы можете прочитать файл, это не похоже на проблемы с python / pandas. Я могу сказать вам клише: "Вы пытались выключить и снова включить"?

It_is_Chris 17.01.2019 03:32

[x вместо x в os.listdir (), если x == 'testfile.csv'] действительно перечислил имя файла. Я попытался перезагрузить компьютер, но он все равно не появился. собирается дать ему вторую попытку. вторая попытка все еще не показала файл.

Li Ai 17.01.2019 03:49

@LiAi хммм, попробуйте открыть панель управления и перейдите к Appearance and Personalization, затем в File Explorer Options нажмите Show hidden files and folders Проверьте Show hidden files, folders, and drives и убедитесь, что Hide extensions for known file types не отмечен, затем примените к папкам

It_is_Chris 17.01.2019 03:55

@ Крис попробовал то, что вы предложили, но все равно не повезло. Я все еще могу прочитать файл. Очень странно.

Li Ai 17.01.2019 05:02

@LiAi, это действительно необычно. Хотел бы я помочь, но это все, о чем я могу думать. Надеюсь, кто-нибудь еще вам поможет. Удачи вам.

It_is_Chris 17.01.2019 05:56

Я использовал блокнот jupyter от Anaconda. Пытался использовать окна терминала и паука, чтобы сделать то же самое, и они оба работали! поэтому я попытаюсь переустановить Anaconda.

Li Ai 17.01.2019 15:00

Теперь это выглядит очень странно ... Я переустановил Anaconda, но файлы в папке все еще не отображаются. НО, когда я открыл Jupyterlab (не jupyter notebook) из Anaconda, я увидел все файлы, которые я сохранил .... Что случилось ??

Li Ai 17.01.2019 15:32

Проб решил для себя. См. Anwser user12352611.

Li Ai 12.11.2019 03:00
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
5
18
23 926
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Возможно, у вас нет доступа к выходной папке.

Сначала попробуйте текущий каталог, например to_csv('tmp.csv').

Затем проверьте право собственности на каталог с помощью ls -l.

Я попробовал ls -l, но он не показал нужный файл.

Li Ai 17.01.2019 14:29

Вы должны использовать эту команду в верхней папке, вы должны проверить, есть ли у вас право записи в папке.

jcyan 18.01.2019 03:54

вы, вероятно, забыли добавить имя файла после пути, поэтому он будет называть ваш файл последним символом вашего пути, который вы можете увидеть на домашней странице jupyter.

должно быть: df.to_csv ('путь / имя_файла.csv', ....)

скорее, чем df.to_csv ('путь.csv' ......)

Я думаю, проблема в том, что вы используете Jupyter Notebook, поэтому «текущий каталог» для ноутбука, вероятно, находится где-то в «C: \ Users \ user_name \ AppData ...».

Попробуйте запустить os.getcwd() на своем ноутбуке. Вероятно, это будет не та папка, в которой сохранен файл *.ipynb. Итак, как @Chris предложил в комментариях, это:

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

... отправит ваш csv в папку AppData.

Вы можете либо изменить рабочий каталог для записной книжки Jupyter, либо использовать полностью указанное имя файла, например:

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

(Примечание: это также сбило меня с толку в VS-Code при использовании интерактивного выполнения iPython, которое происходит, когда вы нажимаете shift + enter. Интересно, что в VS-Code, если вы используете ctrl + shift + p и выбираете «Python: Run selection. .. "он выполняется в вашем терминале по умолчанию, в котором нет этой проблемы.)

Ответ принят как подходящий

У меня была такая же проблема с использованием Spyder. В моем случае это было вызвано инструментом интернет-безопасности (COMODO), который я использовал, который каким-то образом запускал spyder в песочнице или около того и не позволял ему писать в "нормальные" каталоги. Вместо этого он сохранил результат в папке с именем C: VTRoot \ HarddiskVolume2 \ users \. Вы можете попытаться сохранить файл с совершенно уникальным именем a.to_csv ('very_unique_filename.csv'), а затем выполнить поиск в проводнике Windows по этому имени файла, чтобы найти папку, в которой он хранится. Если причина в каком-то подобном инструменте, изменение настроек может помочь.

На самом деле я только что нашел решение, которое вы рекомендовали - оказалось, что приложение jupyter notebook находится в C: VTRoot \ HarddiskVolume2 \ users \, и все файлы там. Если это файл * .py, мы можем разблокировать его в conmodo, а затем он запишет в понравившуюся папку. Однако я не нашел способа разблокировать приложение для ноутбука jupyter.

Li Ai 12.11.2019 02:59

Это даст вам нормальный документ, даже если вы использовали to_csv:

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

Обязательно используйте df.csv, это обеспечит выходной файл CSV.

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

в моем случае файлы были сохранены в корневой папке моих приложений (как и ожидалось).

но Мне нужно было перезапустить Jupyter, хотя у меня была включена автоматическая перезагрузка:

  %load_ext autoreload

  %autoreload 2

это означает, что перезагрузка работает для большинства изменений, но это не сработало, когда я добавил df.to_csv, пока не перезапустил блокнот jupyter

Другие вопросы по теме