为 i = n 创建动态数据帧的问题

Problem with create dataframe dynamic for i = n

我正在尝试根据读取的记录数创建动态 pandas 数据框,其中每条记录都是一列。

我的逻辑是应用循环,其中“for i=1 in N”,其中 N 是读取数据(字符串格式)以创建列。这对我来说不太合适,我尝试了一些替代方法但没有很好的结果。我只得到读取的最后一条记录。

我提出一个建议:

def funct_example(client):
    documents = [ v_document ]

    poller = client.begin_analyze_entities(documents)
    result = poller.result()

    docs = [doc for doc in result if not doc.is_error]
    i = 1
    
    df_final = pd.DataFrame()
    
    for idx, doc in enumerate(docs):
        for entity in doc.entities:
            for i in doc.entities:
                d = {'col' + i : [format(entity.text)]}
                df = pd.DataFrame(data=d)
                df_final = pd.concat([df_final, df], axis=1)
                display(df_final)
                i = i + 1

funct_example(client)

您推荐什么替代方案?

解决方案:

    for idx, doc in enumerate(docs):
    for entity in doc.entities:
        name = 'col' + str(i)
        d = {name : [format(entity.text)]}           
        df = pd.DataFrame(data=d)
        df_final = pd.concat([df_final, df], axis=1)
        i = i + 1
        display(df_final)

谢谢!

这是因为每次迭代后都会重新分配 df。

这是实现它的一种方法

在 for 循环开始之前声明一个空 DF

df_final = pd.DataFrame()

创建 df 后添加 df = pd.DataFrame(data=d)

df_final = pd.concat([df_final, df], axis=1)

这会附加到您的 df_final