[英]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.