簡體   English   中英

使用 Python3 將字節 object 轉換為 Pandas dataframe 會導致空的 Z6A8064B5DF479453550055C。 為什么?

[英]Converting a Bytes object into a Pandas dataframe with Python3 results in an empty dataframe. Why?

我正在閱讀有關 Bytes 庫和 Pandas 的信息,我認為以下帖子中的答案應該對我有用:

如何將字節數據轉換為 python pandas dataframe?

但是,它們都沒有工作。

我有一個包含一些內容的 CSV 文件。 當我將它加載到 Odoo 時,它會將文件返回到Bytes object 中。 我想用pandas閱讀這個Bytes object 並將其轉換為dataframe以便使用dataframe方法。

Bytes object 出現在我的 class 的屬性file_to_import中(這就是為什么你會在我的代碼中看到self.file_to_import的原因)。 如果我顯示它的類型,它會返回<class 'bytes'> 如果我解碼它,我會得到它各自的字符串:

/UHJlY2lvIGRlIGNvbXByYSBkZSB0b2RvcyBsb3MgcHJvdmVlZG9yZXMgbyBzw7NsbyBkZSBlc3RlIHByb3ZlZWRvciBjb25jcmV0bz87O8K/Pzs7OztTdXN0aXR1aXIgQUlDIFNdHBvciBzdcm8w7WoK

它看起來不錯,所以這應該足夠了:

from io import BytesIO
import pandas as pd

df = pd.read_csv(BytesIO(self.file_to_import))

但是, df沒有任何行,如果我檢查df.empty ,它會返回True ,因此dataframe沒有任何信息。 如果我在嘗試將其轉換為dataframe之前檢查BytesIO object 的大小,它會返回 1376 字節,這似乎沒問題,因為 Dolphin 顯示文件的大小為 1,0 KiB (1.031)。

x = BytesIO(self.file_to_import)
_logger.critical(x.getbuffer().nbytes)
df = pd.read_csv(x))

誰能告訴我為什么會這樣? 為什么dataframe是空的?

您的字符串是base64編碼的。 您需要在使用之前對其進行解碼:

import base64

s = b"ZGVmYXVsdF9jb2RlO2...Jhcm87Owo="
s = base64.decodebytes(s)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM