首页 > 解决方案 > bucket.blob.upload_from_string 返回“ValueError:无无法转换为 unicode”

问题描述

我正在尝试df使用以下代码行将 DataFrame ( ) 上传到云存储:

bucket.blob(gcs_reference).upload_from_string(df.to_csv(index=False, encoding='utf-8'), content_type=''application/octet-stream')

但是,我的 DataFrame 对于某些单元格有 None 值,因此会触发错误:

ValueError:无无法转换为 unicode

有没有办法抑制这一点,只为 None 输入空值?过去我对此没有任何问题,我不记得我做了什么不同。

标签: pythongoogle-cloud-platformgoogle-cloud-storage

解决方案


我能够复制并且对我有用:

import pandas as pd
from gcloud import storage
client = storage.Client()

bucket = client.get_bucket('source')
d = {'col1': [1, 2], 'col2': [3, None]}
df = pd.DataFrame(data=d)

bucket.blob('file').upload_from_string(df.to_csv(index=False, encoding='utf-8'), 
content_type='application/octet-stream')

文件内容为:

col1,col2
1,3.0
2,

或者您可以使用:

df.fillna(value=0, inplace=True)
bucket.blob('file').upload_from_string(df.to_csv(index=False, 
encoding='utf-8'), content_type='application/octet-stream')

输出文件将是:

col1,col2
1,3.0
2,0.0

在您的代码中是这部分:

 content_type=''application/octet-stream' 

这是一个语法错误

content_type=''应用程序/八位字节流'


推荐阅读