【问题标题】:accessing python list or Dictionary inside a string在字符串中访问 python 列表或字典
【发布时间】:2019-10-20 15:28:05
【问题描述】:

使用 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 Traceback(最近调用 最后)在() ----> 1 train['list_of_production_companies'] = train['production_companies'].apply(lambda x: [i.name for i in x] if i.name != {} else [])

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\series.py 在 应用(自我,函数,convert_dtype,args,**kwds)3190
否则:3191 个值 = self.astype(object).values -> 3192 mapped = lib.map_infer(values, f, convert=convert_dtype) 3193 3194 if len(mapped) and isinstance(mapped[0], 系列):

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

在 (x) ----> 1 train['list_of_production_companies'] = train['production_companies'].apply(lambda x: [i.name for i in x] if i.name != {} else [])

NameError: name 'i' is not defined

【问题讨论】:

  • 这是数据框的一部分吗?

标签: python pandas


【解决方案1】:

您对 lambda 函数的理解不正确。

用途:

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

【讨论】:

  • i['name'] 在 if 条件下也是如此
  • 是的。刚看到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
相关资源
最近更新 更多