python - 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 输入空值?过去我对此没有任何问题,我不记得我做了什么不同。
解决方案
我能够复制并且对我有用:
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=''应用程序/八位字节流'
推荐阅读
- php - 1 个数组中带有 diff 键的数组
- qt - 对话框窗口关闭时停止提升 QMainWindow
- c++ - 从 C++ 中的另一个文件访问向量或数组
- python - 如何训练具有多个输出的 pytorch 模型
- python-3.6 - Lambda 函数因 /lib64/libc.so.6 失败:未找到版本“GLIBC_2.18”
- cmd - Robocopy 查询以复制除 1 个文件之外的所有文件
- sql - 在我遇到的 sql 上创建表时
- swift - 如何动态更改 SKSpriteNode 的反弹?
- javascript - 创建一个在 HTTP 请求完成之前产生的函数
- arrays - golang 不会更新地图中的数组