【问题标题】:How can I grab all the unique dictionary value in a particular key that is in a list but also in a column?如何获取列表中以及列中的特定键中的所有唯一字典值?
【发布时间】:2018-04-05 18:18:54
【问题描述】:

我必须对一些 json 元数据进行排序,所以我使用 panda.read_json 创建了一个数据框。 我打电话给df['tags'] 来获取我想要的专栏,但我不是从这里开始的最佳方式。

'tags' 列中有174157 列表类型元素,每个列表中有17 个字典。我想要的结果是字典中的唯一值,其对应的键为 'name' :... 整个标签列。

下图是当我调用df[tag] 时,我想要来自'name' : 的所有唯一值

已编辑:实际上每行中还有 16 个带有“名称”的字典,但由于...,您没有看到它

【问题讨论】:

  • 似乎只有标签列是熊猫系列,所以我必须使用多个 forloops 和一个空列表来检查和存储所有唯一字符串。
  • 输出结果如何?我怀疑这是一种单线解决方案。

标签: json pandas indexing unique


【解决方案1】:

假设你从类似的东西开始

df = pd.DataFrame({'a': [[{'name': 'foo'}, {'name': 'foo1'}], [{'name': 'bar'}]]})

然后就可以使用了

names = pd.DataFrame(df.a.tolist()).applymap(lambda d: d.get('name', '') if isinstance(d, dict) else '')
>>> {i: names[i].unique() for i in names.columns}
{0: array(['foo', 'bar'], dtype=object), 1: array(['foo1', ''], dtype=object)}

  • pd.Dataframe(df.a.tolist()) 从元素中创建一个 Dataframe。
  • applymap 提取名称
  • dict 理解查找唯一名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 2016-12-27
    • 2017-10-23
    相关资源
    最近更新 更多