首页 > 解决方案 > 将存储为 Azure Blob 的 CSV 直接加载到 Pandas 数据帧中,而无需先保存到磁盘

问题描述

使用 pandas 探索 Azure blob 存储中的数据一文(此处)展示了如何将数据从 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 直接拉入数据帧而不先将其保存到本地磁盘?

标签: pythonpandasazure-storage

解决方案


你可以尝试这样的事情(使用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 存储)或多或少做了同样的事情。

希望能帮助到你。


推荐阅读