我试图读取熊猫泡菜时出错,例如df。到_pickle()
方法,该方法存储在谷歌云存储中。我正在努力做到以下几点:
path_to_gcs_file = 'gs://xxxxx'
f = file_io.FileIO(path_to_gcs_file, mode='r').read()
train_df = pd.read_pickle(f)
f.close()
我得到以下错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
或者我试着:
f = BytesIO(file_io.read_file_to_string(path_to_gcs_file, binary_mode=True))
train_df = pd.read_pickle(f)
它可以在本地工作,但不能在CloudML上工作!
f = file_io.read_file_to_string(path_to_gcs_file, binary_mode=True)
train_df = pd.read_pickle(f)
给我一个错误:AttributeError:'bytes'对象没有属性'seek'
pandas.read_pickle
接受路径作为第一个参数;您正在传递一个File
对象(file. FileIO
)和一个bytes
对象(read_to_string
)。
到目前为止,我还没有找到用熊猫直接从GCS读取泡菜物体的方法,所以你必须把它复制到机器上。你可以使用file_io.copy
:
file_io.copy('gs://xxxx', '/tmp/x.pkl')
train_df = pd.read_pickle('/tmp/x.pkl')
你应该可以不用使用上下文管理器,但我认为你用这种方式是在终结证书,所以你应该通过api下载文件
pip install --upgrade google-cloud-storage
然后
# Initialise a client
storage_client = storage.Client("[Your project name here]")
# Create a bucket object for our bucket
bucket = storage_client.get_bucket(bucket_name)
# Create a blob object from the filepath
blob = bucket.blob("folder_one/foldertwo/filename.extension")
# Download the file to a destination
blob.download_to_filename(path_to_gcs_file)
with open(path_to_gcs_file, "rb" as f:
train_df = = pickle.load(f)
从这个答案中得到了很多:从谷歌云存储的文件夹中下载文件
Pandas中的应该是的替代品。 根据Pandas在MsgPack上的文档: 这是一种轻量级的可移植二进制格式,类似于二进制JSON,具有高度的空间效率,在写入(序列化)和读取(反序列化)方面都提供了良好的性能。 然而,我发现它的性能似乎无法与泡菜相提并论。 问题:除了pickle潜在的安全问题之外,msgpack比pickle有什么好处?pickle仍然是序列化数据的首选方法,还是目前存在更好的
问题内容: 我创建了一些数据并将其存储了几次,如下所示: 每次文件大小增加,但是当我打开文件时 我只能看到上次的数据。如何正确读取文件? 问题答案: Pickle一次序列化一个对象,然后读回一个对象-腌制的数据按顺序记录在文件上。 如果您只是简单地这样做,则应该读取序列化到文件中的第一个对象(而不是您编写的最后一个对象)。 对第一个对象进行反序列化后,文件指针位于下一个对象的开头-如果您再次调用,
所以。。。我需要从.pkl文件中读取并导入图像数据集。图像存储为“二进制blob”。一旦完成了,我需要将它们转换成字节格式,这样我就可以通过Google的CloudVision运行它们。我设法在Linux虚拟机上打开了该文件(花了几天时间试图让它在Windows上工作…)。但现在我似乎无法将这个“二进制斑点”转换为我可以使用的实际图像。。。 下面是一个“二进制blob”: \1\x0 0 0 0\
问题内容: 这个问题已经在这里有了答案 : Python中的Windows路径 (5个答案) 4年前关闭。 追溯(最近一次通话): 产品中的文件“”,第1行= pd.read_csv(’C:\ amazon_baby.csv’) 在parser_f中的第562行的文件“ C:\ Users \ kvsn \ Anaconda3 \ lib \ site-packages \ pandas \ io
问题内容: 我刚接触熊猫,正在弄清楚如何读取文件。该文件来自WRDS数据库,是SP500成分列表,可追溯到1960年代。我检查了文件,无论我如何使用“read_csv”将其导入,我仍然无法正确显示数据。 以上输出内容是什么意思?一切都会有所帮助 问题答案: 韦斯在一封电子邮件中回答了我。干杯。 这是一个固定宽度格式的文件(通常不使用逗号或制表符分隔)。我意识到,熊猫没有像R那样的定宽阅读器,尽管可
当我只想要列的一个子集(例如总共20列中的第4和第7列)时,如何使用Pandas读取.csv文件(没有头)?我似乎无法执行