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

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

我知道有一个类似的问题,但它更笼统,并不具体针对这个包。我正在将 Sagemaker Jupyter 笔记本中的 pandas 数据帧保存到 S3 中的 csv 中,如下所示:

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

但是我收到以下错误:

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

代码大致是我从S3读取一个csv,对其进行一些预处理,然后保存到S3。我可以通过以下方式从 S3 成功读取 csv:

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

我试图保存到 S3 的对象确实是 pandas.core.frame.DataFrame

在笔记本中我可以看到使用 !pip show package 我有 pandas 0.24.2 和 s3fs 0.1.5。

可能是什么问题?

你能试试吗

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

它应该可以解决您的错误。默认模式是 w,它以文本而不是字节的形式写入文件系统。 s3 期望数据为字节。因此,在将数据帧作为 csv 写入文件系统时,您必须将模式指定为 wb(write bytes)。

我刚遇到这个问题。

原因似乎是 Pandas 的旧版本。 运行

!pip install --upgrade pandas

在你的 Jupyter Notebook 中。

您可能拥有旧版本 Pandas 的原因是,如果您关闭然后重新启动您的 AWS 机器 - AWS 环境具有旧版本的 Pandas(这就是我遇到的情况).这个问题是 fixed last year