Конвертировать список словарей в pandas DF, не используя слишком много памяти - PullRequest
1 голос
/ 04 марта 2020

Я пытаюсь создать массив pandas из более чем 500 000 строк и 20 столбцов в al oop, где новая строка добавляется при каждом новом проходе для l oop. Я попытался сделать это с помощью метода 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)

В качестве альтернативы я попытался следовать некоторым предыдущим предложениям по topi c и сделать список словарей данных и последующее преобразование их в pandas фрейм данных после завершения l oop:

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_results, намного меньше, чем у list_results.

Может быть, есть ли альтернативный способ сгруппировать результаты перед передачей их на фрейм данных, что может сэкономить мне немного памяти?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...