如何在python中将mongodb文档集合转换为numpy数组?

2024-06-12 11:02:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从MongoDB中获取键“Verlauf”上具有相同值的所有文档。 到目前为止,这是可行的。但是我想把这个输出转换成一个numpy数组。 这是怎么回事

我使用以下命令从MongoDB获取列表中的文档:

v1 = list(collection.find({"Verlauf": 1}))

输出如下所示(对于2个匹配文档):

[{'_id': ObjectId('5f05aca208c3c86edf465953'), 'Verlauf': 1, 'Wie stark haben Sie den Kraftverlauf empfunden?': 2, 'Wie gut wurde dies empfunden?': 3, 'Dritte Frage hier einfügen': 4, 'Vierte Frage hier einfügen': 5, 'Fünfte Frage hier einfügen': 6, 'Sechste Frage hier einfügen': 7}, {'_id': ObjectId('5f05b89d48eb73c488a90efb'), 'Verlauf': 1, 'Wie stark haben Sie den Kraftverlauf empfunden?': 4, 'Wie gut wurde dies empfunden?': 5, 'Dritte Frage hier einfügen': 4, 'Vierte Frage hier einfügen': 5, 'Fünfte Frage hier einfügen': 4, 'Sechste Frage hier einfügen': 5}]

是否有一种方法可以在numpy数组中构造此列表中的数据,其中第一行包含第一个键的所有值,第二行包含第二个键的所有值

所以对于这个例子:

[ [5f05aca208c3c86edf465953, 5f05b89d48eb73c488a90efb],
  [1, 1],  
  [2, 4],
  [3, 5],
  [4, 4],
  [5, 5],
  [6, 4],
  [7, 5]]

我对所有这些数据处理都很陌生,非常感谢您的建议

稍后我要分析这些数据,以获得所有文档中每个键的最小值、最大值、下四分位、上四分位和中位数

提前谢谢。 问候语 汤姆


Tags: 文档numpyid列表mongodb数组genobjectid
1条回答
网友
1楼 · 发布于 2024-06-12 11:02:41

我不太经常使用python,所以我相信有一种更好的方法可以做到这一点

当我玩的时候,通常是小规模的实验,因此我只使用蛮力方法(你可以用几种不同的方法)

columns = ["_id", "field1", "field2"]
data = list(map(lambda item: [item["_id"], item["field1"], item["field2"]], db.collection.find({})))

df = DataFrame(data, columns=columns)

你甚至可以再加一点糖:

columns = ["_id", "field1", "field2"]
data = list(map(lambda item: list(map(lambda col: item[col], columns)), db.collection.find({})))

df = DataFrame(data, columns=columns)

请注意,这不适用于嵌套字段,即"field1.nested"值,因为python希望您使用item["field1"]["nested"]访问嵌套的字典值。在这种情况下,我通常只使用for循环来实现所需的结果

相关问题 更多 >