簡體   English   中英

如何將 mongodb 文檔集合轉換為 python 中的 numpy 數組?

[英]How can I convert a mongodb document collection to a numpy Array in python?

我正在嘗試從我的 MongoDB 中獲取密鑰“Verlauf”上具有相同值的所有文檔。 到目前為止有效。 但后來我想將此 output 轉換為 numpy 數組。 這是如何運作的?

我使用以下命令從 MongoDB 獲取列表中的文檔:

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

Output 看起來像這樣(對於 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]]

我對所有這些數據處理都很陌生,非常感謝任何建議。

稍后我想分析這些數據以獲取所有文檔中每個鍵的最小值、最大值、下四分位數、上四分位數和中位數。

提前致謝。 問候湯姆

我不經常使用 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 循環來實現所需的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM