Python 在不使用太多内存的情况下将字典列表转换为DF

Python 在不使用太多内存的情况下将字典列表转换为DF,python,pandas,list,dataframe,memory,Python,Pandas,List,Dataframe,Memory,我试图在一个循环中创建一个超过500000行和20列的pandas数组,在for循环的每个新过程中都会添加一个新行。我尝试使用pd.DataFrame.append()方法来实现这一点,但它似乎非常适合这么多循环: df_results = pd.DataFrame(columns = fldIds) for i in range(0, 500000): msg = parseMsg(rawMsg) dfDict = {} for keys in fldIds:

我试图在一个循环中创建一个超过500000行和20列的pandas数组,在for循环的每个新过程中都会添加一个新行。我尝试使用
pd.DataFrame.append()
方法来实现这一点,但它似乎非常适合这么多循环:

df_results = pd.DataFrame(columns = fldIds)

for i in range(0, 500000):
    msg = parseMsg(rawMsg)
    dfDict = {}

    for keys in fldIds:
        tempVal = getattr(msg, keys)
        if tempVal != 0:
            dfDict[keys] = tempVal

    df_results = df_results.append(dfDict)
另一种选择是,我尝试遵循之前关于该主题的一些建议,制作一个数据字典列表,然后在循环完成后将其转换为pandas数据帧:

list_results = []

for i in range(0, 500000):
    msg = parseMsg(rawMsg)
    dfDict = {}

    for keys in fldIds:
        tempVal = getattr(msg, keys)
        if tempVal != 0:
            dfDict[keys] = tempVal

    list_results.append(dfDict)

df_results = pd.DataFrame(list_results)
这使得整个过程大大加快。这个方法的问题是字典列表占用了大量内存,而我的内存非常有限。df_结果本身使用的内存远少于list_结果


在将结果传递到数据帧之前,是否有其他方法可以对结果进行分组,从而节省一些内存使用?

parseMsg返回什么?这是一个google protobuf消息解析器。基本上,它是一个我感兴趣的领域。因此,在嵌套循环中,我将带有for循环的字段提取到字典中,然后将该字典附加到列表中脚本添加500000条记录的平均时间是多少?如果将列表转换为数据帧,大约需要2分钟,但是对于pandas append方法,我总是在大约8分钟后停止它。
parseMsg
返回什么?它是一个googleprotobuf消息解析器。基本上,它是一个我感兴趣的领域。因此,在嵌套循环中,我将带有for循环的字段提取到字典中,然后将该字典附加到列表中。脚本添加500000条记录的平均时间是多少?如果将列表转换为数据帧,大约需要2分钟,但使用pandas append方法,我总是在8分钟左右后停止。