使用Python,我正在尝试访问包含字典列表的CSV文件中字符串格式的字段。
一行train['list_of_production_companies']
"[{'name': 'Lions Gate Films', 'id': 35}, {'name': 'Vertigo Entertainment', 'id': 829}, {'name': 'Gotham Group', 'id': 3672}, {'name': 'Tailor Made', 'id': 24557}, {'name': 'Mango Farms', 'id': 24558}, {'name': 'Quick Six Entertainment', 'id': 24561}]"
train['list_of_production_companies'] = train['production_companies'].apply(lambda x: [i['name'] for i in x] if i[name] != {} else [])
NameError跟踪(最近的呼叫 最后)在() ----> 1列火车['list_of_production_companies'] =火车['production_companies']。apply(lambda x:[i.x中i的名称]如果 i.name!= {} else [])
C:\ ProgramData \ Anaconda3 \ lib \ site-packages \ pandas \ core \ series.py在 apply(self,func,convert_dtype,args,** kwds)3190
否则:3191个值= self.astype(object).values -> 3192映射= lib.map_infer(值,f,convert = convert_dtype)3193 3194如果len(被映射)和 isinstance(映射[0],系列):pandas._libs.lib.map_infer()中的pandas / _libs / src \ inference.pyx
在(x)中 ----> 1列火车['list_of_production_companies'] =火车['production_companies']。apply(lambda x:[i.x中i的名称]如果 i.name!= {} else [])
NameError:名称'i'未定义
答案 0 :(得分:1)
您对lambda函数的理解不正确。
使用:
train['list_of_production_companies'] = train['production_companies'].apply(lambda x: [i['name'] if 'name' in i else [] for i in x])