NotImplementedError: текстовый режим не поддерживается, используйте mode = 'wb' и управляйте байтами в s3fs - PullRequest
2 голосов
/ 31 января 2020

Я знаю, что есть похожий вопрос, но он более общий и не конкретизирует c этого пакета. Я сохраняю pandas фрейм данных в блокноте Sagemaker Jupyter в CSV-файл в S3 следующим образом:

df.to_csv('s3://bucket/key/file.csv', index=False)

Однако я получаю следующую ошибку:

NotImplementedError: Text mode not supported, use mode='wb' and manage bytes

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

df.read_csv('s3://bucket/key/file.csv')

Объект, который я пытаюсь сохранить на S3, действительно является pandas .core.frame.DataFrame

В записной книжке я вижу, используя !pip show package, что у меня есть pandas 0.24.2 и s3fs 0.1.5.

В чем может быть проблема?

Ответы [ 2 ]

2 голосов
/ 31 января 2020

Можете ли вы попробовать

df.to_csv("s3://bucket/key/file.csv", index=False, mode='wb')

Это должно исправить вашу ошибку. Режим по умолчанию - w , который записывает в файловой системе текст, а не байты. Где, поскольку s3 ожидает, что данные будут байтами. следовательно, вы должны указать режим как wb (запись байтов) при записи кадра данных как csv в файловую систему.

1 голос
/ 03 апреля 2020

У меня только что была эта проблема.

Причиной, похоже, является старая версия Pandas. Запустите

!pip install --upgrade pandas

в своем ноутбуке Jupyter.

Причина, по которой вы можете иметь старую версию Pandas, заключается в том, что вы выключили, а затем перезапустили свой AWS компьютер - в средах AWS есть более старые версии Pandas (это то, что случилось с меня). Эта проблема была исправлена ​​в прошлом году .

...