【问题标题】:Load CSV stored as an Azure Blob directly into a Pandas data frame without saving to disk first将存储为 Azure Blob 的 CSV 直接加载到 Pandas 数据帧中,而无需先保存到磁盘
【发布时间】:2020-03-18 18:01:23
【问题描述】:

使用 pandas 探索 Azure blob 存储中的数据 (here) 文章介绍了如何将数据从 Azure Blob 存储加载到 Pandas 数据框中。

他们首先下载 blob 并将其作为 CSV 文件存储在本地,然后将该 CSV 文件加载到数据框中。

import pandas as pd
from azure.storage.blob import BlockBlobService

blob_service = BlockBlobService(account_name=STORAGEACCOUNTNAME, account_key=STORAGEACCOUNTKEY)
blob_service.get_blob_to_path(CONTAINERNAME, BLOBNAME, LOCALFILENAME)
dataframe_blobdata = pd.read_csv(LOCALFILE)

有没有办法将 blob 直接拉入数据帧而不先将其保存到本地磁盘?

【问题讨论】:

  • 也许你可以把它存储在一个流中

标签: python pandas azure-storage


【解决方案1】:

您可以尝试类似的方法(使用StringIO):

import pandas as pd
from azure.storage.blob import BlockBlobService
from io import StringIO

blob_service = BlockBlobService(account_name=STORAGEACCOUNTNAME, account_key=STORAGEACCOUNTKEY)
blob_string = blob_service.get_blob_to_text(CONTAINERNAME, BLOBNAME)
dataframe_blobdata = pd.read_csv(StringIO(blobstring))

请注意该文件将存储在内存中,这意味着如果它是一个大文件,它可能会导致MemoryError(也许您可以尝试delblob_string,以便在您释放内存后获取数据帧中的数据,idk)。

我对 Azure DataLake Storage Gen2(它使用 Azure Blob 存储)或多或少做了同样的事情。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2020-12-15
    • 2013-06-10
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多