首页 > 解决方案 > 创建具有可变行数的数据框

问题描述

我已经创建了这个函数来创建一个数据框,每次代理调用函数时都会添加一个新的完整行。问题是,我希望之前创建的行保留在数据框中,这就是我使用指令追加的原因。每次调用它都会从头开始创建数据框,因此前一行被删除,我希望索引不断增加并添加新行。

这是Python中函数的代码:

def list_active_agents(agent_id, agent_name, agent_type, activation_time):
    list = []
    list.append({
        'agent_id': agent_id,
        'agent_name': agent_name,
        'agent_type': agent_type,
        'activation_time': activation_time
    })
    columns = ['agent_id', 'agent_name', 'agent_type', 'activation_time']
    list_aa = pd.DataFrame(list, columns=columns)    
    list_aa = list_aa.drop_duplicates(keep='first')     
    return list_aa

我已经尝试使用该指令; list_aa.empty,以确认 DataFrame 何时为空,但它不能按我想要的方式工作。

帮助。

标签: pythonpandasdataframeappend

解决方案


尝试:

li = lambda x,y,z,w :  {
        'agent_id': x,
        'agent_name': y,
        'agent_type': z,
        'activation_time': w
    }
columns = ['agent_id', 'agent_name', 'agent_type', 'activation_time']
list_aa = pd.DataFrame([], columns=columns)
def list_active_agents(agent_id, agent_name, agent_type, activation_time):
    global list_aa
    list_aa = list_aa.append(li(agent_id, agent_name, agent_type, activation_time), ignore_index=True)
    list_aa = list_aa.drop_duplicates(keep='first')     
    return list_aa

list_active_agents(1, 'a', 't', 10)
list_active_agents(1, 'b', 't', 10)

    agent_id    agent_name  agent_type  activation_time
0   1           a           t           10
1   1           b           t           10

list_active_agents(1, 'a', 't', 10)
list_active_agents(1, 'a', 't', 10)

    agent_id    agent_name  agent_type  activation_time
0   1           a           t           10

推荐阅读