如何在MinIO中将熊猫数据框另存为CSV?

时间:2019-11-20 13:07:07

标签: python pandas minio

我是MinIo的新手,我正在使用minio python库,并尝试将熊猫数据框另存为CSV。 根据那里的文档,我正在使用put_object将数据插入远程云位置。下面是我的代码。

from minio import Minio
from minio.error import ResponseError
from io import StringIO, BytesIO
import pandas as pd
import os
minioClient = Minio('mydomain.com',
              access_key='my_access_key',
              secret_key='scret_key',
              secure=False)
df = panda data frame
csv_buffer = StringIO()
df.to_csv(csv_buffer)
minioClient.put_object('mu_bucket',
                       'mypath/test.csv',
                        data = csv_buffer.getvalue(),
                        length = csv_buffer.tell(),
                        content_type='application/csv')

在文档中所有示例都在保存物理文件,但我需要从数据帧保存。 那就是为什么我使用StringIO创建字符串缓冲区。但出现以下错误。

AttributeError: 'str' object has no attribute 'read

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您必须使用BytesIO而不是StringIOBytesIO允许您将字节数组包装在可以提供给minio的流中。


from io import BytesIO

import pandas as pd
from minio import Minio

minioClient = Minio('mydomain.com',
              access_key='my_access_key',
              secret_key='scret_key',
              secure=False)

df = pd.DataFrame()
csv_bytes = df.to_csv().encode('utf-8')
csv_buffer = BytesIO(csv_bytes)

minioClient.put_object('mu_bucket',
                       'mypath/test.csv',
                        data=csv_buffer,
                        length=len(csv_bytes),
                        content_type='application/csv')