小编Pep*_*eng的帖子

不能迭代嵌套for循环作为通缉-python-可能是一个简单的错误

我尝试过以下代码:目的是生成一个字典,其中每个键都有一个列表作为值.第一次迭代顺利进行并根据需要生成项目,但第二个循环(嵌套for循环)不会按预期生成列表.

请帮我这个简单的代码.它一定有问题,代码如下:

 schop = [1, 3, 1, 5, 6, 2, 1, 4, 3, 5, 6, 6, 2, 2, 3, 4, 4, 5]
 mop =   [1, 1, 2, 1, 1, 1, 3, 1, 2, 2, 2, 3, 2, 3, 3, 2, 3, 3]
 mlist = ["1","2","3"]
 wmlist=zip(mop,schop)

 title ={}
 for m in mlist:
     m = int(m)
     k=[]
     for a,b in wmlist:
         if a == m:
            k.append(b)
     title[m]=k
 print(title)
Run Code Online (Sandbox Code Playgroud)

结果如下:

title: {1: [1, 3, 5, 6, 2, 4], 2: [], 3: []} …
Run Code Online (Sandbox Code Playgroud)

python nested-loops

5
推荐指数
1
解决办法
127
查看次数

Python 脚本,可按流使用 Azure 存储 Blob 中的数据,并按流更新 Blob,无需读取和上传本地文件

我有一个用于数据处理的 python 代码,我想使用 azure 块 blob 作为代码的数据输入,需要指定,来自块 blob 的 csv 文件。将 csv 文件从 azure blob 下载到本地路径很好,如果在本地运行,还可以为 python 代码上传其他方式,但问题是我的代码在 azure 虚拟机上运行,​​因为它对我的 Apple Air 来说非常重,pandas read_csv在这种情况下,来自本地路径不起作用,因此我必须通过流下载和上传 csv 文件并将其更新到 azure 存储,而无需本地保存。下载和上传 csv 的体积都非常小,远小于 blob 块限制

没有那么多教程来解释如何逐步执行此操作,MS Docs 通常也很难解释,我的最小代码如下:

用于从 azure blob 存储下载

from azure.storage.blob import BlockBlobService
storage = BlockBlobService(account_name='myname', account_key = 'mykey')
#here i don't know how to make a csv stream that could could be used in next steps#
file = storage.get_blob_to_stream('accountname','blobname','stream')
df = pd.read_csv(file)
#df for later steps#
Run Code Online (Sandbox Code Playgroud)

用于通过数据帧从代码按流上传和更新 blob

df …
Run Code Online (Sandbox Code Playgroud)

python azure azure-blob-storage

5
推荐指数
1
解决办法
1万
查看次数

Azure存储get_blob_to_stream无法将已保存的csv文件下载为流

我想将存储在Azure存储中的CSV文件下载到流中,并直接在我的python脚本中使用,但是在Thomas的帮助下完成此操作后,我无法使用pandas read_csv方法,错误消息为:pandas.io.common。 EmptyDataError:没有要从文件中解析的列,因此我假设下载的CSV流实际上是空的,但是签入存储帐户后,CSV文件中的所有数据都可以使用,这是什么问题?以下是Thomas的代码:

from azure.storage.blob import BlockBlobService
import io
from io import BytesIO, StringIO
import pandas as pd
from shutil import copyfileobj
with BytesIO() as input_blob:
     with BytesIO() as output_blob:
    block_blob_service = BlockBlobService(account_name='my account', account_key='mykey')

    block_blob_service.get_blob_to_stream('my counter', 'datatest1.csv', input_blob)

    df=pd.read_csv(input_blob)
    print(df)

    copyfileobj(input_blob, output_blob)

    #print(output_blob)

    # Create the a new blob
    block_blob_service.create_blob_from_stream('my counter', 'datatest2.csv', output_blob)
Run Code Online (Sandbox Code Playgroud)

如果我不执行read_csv代码,则create_blob_from_stream将创建一个空文件,但是如果我执行read_csv代码,则会出现错误:

pandas.parser.TextReader。CINIT(熊猫\ parser.c:6171)pandas.io.common.EmptyDataError:没有列从文件解析

the download file stored fine in the blob storage with all data in it. as showing below:
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

python io azure-storage-blobs pandas

3
推荐指数
1
解决办法
1103
查看次数