在字符串中访问python列表或Dictionary

时间:2019-06-05 06:12:48

标签: python pandas

使用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'未定义

1 个答案:

答案 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])