bucket.blob.upload_from_string возвращает «ValueError: None не может быть преобразован в Unicode» - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь загрузить DataFrame (df) в облачное хранилище, используя следующую строку кода:

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

Однако мой DataFrame имеет для некоторых ячеек значения None, и поэтому он вызывает ошибку:

ValueError: None не может быть преобразовано в Unicode

Есть ли способ переопределить это и просто поставить пустые значения для None? У меня не было никаких проблем с этим в прошлом, я не могу вспомнить, что я сделал по-другому.

1 Ответ

0 голосов
/ 07 ноября 2019

Мне удалось воспроизвести, и у меня это сработало:

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= '' application / octet-stream '

...