首页 > 解决方案 > 如何在 Python 中过滤对象数组?

问题描述

我有一个名为 project 的集合,这个集合包含不同的文档,每个文档都包含一个名为 data 的对象数组。

在此处输入图像描述

我希望能够通过 projectAlias 过滤数据(Excel 文件)并使用 pymongon 和 pandas 在 SQL(列和行)中构造这个文件

例如

在此处输入图像描述

标签: pythonpandasmongodb

解决方案


这里没有代码,所以我不得不做一些猜测:

  • 我将假设您的所有数据都已经在它自己的数组中,从它最初进入的任何形式中提取。如果需要从多个文档中收集,我假设已经完成
  • 我假设每个对象都有一个带有字符串值的键“projectAlias”
  • 我假设已经处理了没有“projectAlias”键的任何对象
  • 为了懒惰,我假设您想按字典顺序对数据进行排序(例如“a”<“b”,“A”<“a”)

像这样的东西可能有用:

#Made up function for first and third assumptions
data_array = collect_data(documents)
data_array.sort(key=lambda obj: obj["projectAlias"])

#Or, to create a new array with sorted data
sorted_data = sorted(data_array, key=lambda obj: obj["projectAlias"])

python 内置排序函数的键 arg 采用某种其他函数,并在对该数组的结果进行排序之前在数组的每个元素上运行它。然后因为 python 很有帮助,它预先定义了用于排序的字符串比较,将大写字母放在第一位,然后是英文字母的小写字母。当您进入口音、变音符号和其他变体时,情况就会发生变化。我在那里没有见识。

如果您的数据需要其他排序,您可能希望为 key 定义一个不同的 lambda 函数,以产生更适合您所需排序的输出。另一个可能是值的长度:

#Made up function for first and third assumptions
data_array = collect_data(documents)
data_array.sort(key=lambda obj: len(obj["projectAlias"]))

#Or, to create a new array with sorted data
sorted_data = sorted(data_array, key=lambda obj: len(obj["projectAlias"]))

如果您想了解更多信息,python.org 的 wiki 中的“关键功能”部分可能会很有用


推荐阅读