简体   繁体   English

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

[英]accessing python list or Dictionary inside a string

Using Python I am trying to access a field which is in string format in a CSV file which has a list of dictionaries. 我正在使用Python尝试访问包含字典列表的CSV文件中的字符串格式的字段。

one row of train['list_of_production_companies'] 一列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 Traceback (most recent call last) in () ----> 1 train['list_of_production_companies'] = train['production_companies'].apply(lambda x: [i.name for i in x] if i.name != {} else []) ()最近一次调用NameError()最近一次调用()()最近一次调用()–> 1 train ['list_of_production_companies'] = train ['production_companies']。apply(lambda x:[i.x中i的i.name]如果i.name! = {}其他[])

C:\\ProgramData\\Anaconda3\\lib\\site-packages\\pandas\\core\\series.py in apply(self, func, convert_dtype, args, **kwds) 3190 适用于C:\\ ProgramData \\ Anaconda3 \\ lib \\ site-packages \\ pandas \\ core \\ series.py(self,func,convert_dtype,args,** kwds)3190
else: 3191 values = self.astype(object).values -> 3192 mapped = lib.map_infer(values, f, convert=convert_dtype) 3193 3194 if len(mapped) and isinstance(mapped[0], Series): 否则:3191个值= self.astype(object).values-> 3192个映射= lib.map_infer(values,f,convert = convert_dtype)3193 3194如果len(mapped)和isinstance(mapped [0],Series):

pandas/_libs/src\\inference.pyx in pandas._libs.lib.map_infer() pandas._libs.lib.map_infer()中的pandas / _libs / src \\ inference.pyx

in (x) ----> 1 train['list_of_production_companies'] = train['production_companies'].apply(lambda x: [i.name for i in x] if i.name != {} else []) 在(x)---->中1火车['list_of_production_companies'] =火车['production_companies']。apply(lambda x:[i。x中i的名称],如果i.name!= {}其他[])

NameError: name 'i' is not defined NameError:未定义名称“ i”

Your comprehension is incorrect in the lambda function. 您对lambda函数的理解不正确。

Use: 采用:

train['list_of_production_companies'] = train['production_companies'].apply(lambda x: [i['name'] if 'name' in i else [] for i in x])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM