尝试在每个数据帧列条目中搜索与'Id'相对应的值时出现内存错误

问题描述 投票:1回答:1

我有一个数据框列,其中包含如下所示格式的值:

df = pd.DataFrame(data={'c':[{'name': 'Paramount Pictures', 'id': 4}, {'name': 'United Artists', 'id': 60}, {'name': 'Metro-Goldwyn-Mayer (MGM)', 'id': 8411}]})

df
                  c
0            {'name': 'Paramount Pictures', 'id': 4}
1               {'name': 'United Artists', 'id': 60}
2  {'name': 'Metro-Goldwyn-Mayer (MGM)', 'id': 8411}

我想提取对应于Ids的所有值,例如4,60,8411。我为此编写了以下代码:

def FindIdInColumn(column,callBack,fieldName):
    for i in range(0,len(column)):
        collectionJson = column[i]
        if type(collectionJson) !=str or collectionJson == '':
            continue
        idIndex = 0
        idIndex = collectionJson.find(fieldName,idIndex,len(collectionJson))
        while idIndex != -1:
            idStr = ''
            j = idIndex+5
            while j<len(collectionJson) and collectionJson[j]!=',':
                if not(collectionJson[j].isspace()) and collectionJson[j].isnumeric():
                    idStr = idStr + collectionJson[j]
                j=j+1
            callBack(i,idStr)
            idIndex = idIndex+2
            idIndex = collectionJson.find(fieldName,idIndex,len(collectionJson))

这里列是数据框列,fieldName是'Id',并且callback是在提取Id值之后要调用的函数。由于我要在7列上运行此功能,因此此功能正在消耗大量RAM。有没有一种方法可以优化此功能以使用les内存。

python pandas dataframe out-of-memory
1个回答
0
投票

这是我所做的:

df = pd.DataFrame(data={'c':[{'name': 'Paramount Pictures', 'id': 4}, 
                             {'name': 'United Artists', 'id': 60}, 
                             {'name': 'Metro-Goldwyn-Mayer (MGM)', 'id': 8411}]})

df['id'] = df.apply(lambda r: dict(r['c'])['id'], axis=1)

df['id'].tolist()
[4, 60, 8411]
© www.soinside.com 2019 - 2024. All rights reserved.