从 Azure blob 存储读取 csv 并存储在 DataFrame 中

新手上路,请多包涵

我正在尝试使用 python 从 blob 存储中读取多个 CSV 文件。

我正在使用的代码是:

 blob_service_client = BlobServiceClient.from_connection_string(connection_str)
container_client = blob_service_client.get_container_client(container)
blobs_list = container_client.list_blobs(folder_root)
for blob in blobs_list:
    blob_client = blob_service_client.get_blob_client(container=container, blob="blob.name")
    stream = blob_client.download_blob().content_as_text()

我不确定存储在熊猫数据框中读取的 CSV 文件的正确方法是什么。

我尝试使用:

 df = df.append(pd.read_csv(StringIO(stream)))

但这告诉我一个错误。

知道我该怎么做吗?

原文由 Reco Jhonatan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 847
2 个回答

您可以从 blob 存储下载文件,然后从下载的文件中将数据读入 pandas DataFrame。

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

STORAGEACCOUNTNAME= <storage_account_name>
STORAGEACCOUNTKEY= <storage_account_key>
LOCALFILENAME= <local_file_name>
CONTAINERNAME= <container_name>
BLOBNAME= <blob_name>

#download from blob
t1=time.time()
blob_service=BlockBlobService(account_name=STORAGEACCOUNTNAME,account_key=STORAGEACCOUNTKEY)
blob_service.get_blob_to_path(CONTAINERNAME,BLOBNAME,LOCALFILENAME)
t2=time.time()
print(("It takes %s seconds to download "+blobname) % (t2 - t1))

# LOCALFILE is the file path
dataframe_blobdata = pd.read_csv(LOCALFILENAME)

有关详细信息,请参阅 此处


如果您想直接进行转换,代码会有所帮助。您需要从 blob 对象和 get_blob_to_text 中获取内容,不需要本地文件名。

 from io import StringIO
blobstring = blob_service.get_blob_to_text(CONTAINERNAME,BLOBNAME).content
df = pd.read_csv(StringIO(blobstring))

原文由 unknown 发布,翻译遵循 CC BY-SA 4.0 许可协议

import pandas as pd
data = pd.read_csv('blob_sas_url')

可以通过右键单击要导入的 Azure 门户的 blob 文件并选择“生成 SAS”来找到 Blob SAS Url。然后,单击生成 SAS 令牌和 URL 按钮并将 SAS url 复制到上面的代码中以代替 blob_sas_url。

原文由 Sahaj Raj Malla 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题