假設我將下表存盤在 Firestore 集合中:
AAA BBB CCC
6 1 15
3 19 83
100 4 2
我想閱讀整個集合并將其轉換為 Python 中的 Pandas 資料幀。我用下面的代碼片段試了一下:
cred = credentials.Certificate(serviceAccountKeyJson)
firebase_admin.initialize_app(cred, databaseURL)
db = firestore.client()
col_ref = db.collection(collection_name)
docs = col_ref.stream()
rows_list = []
for doc in docs:
column_name_list = list(doc.to_dict().keys())
values_list = list(doc.to_dict().values())
rows_list.append(values_list)
col_data_df = pd.DataFrame(rows_list, columns=column_name_list)
它有效,但是當我將其保存col_data_df到 csv 檔案時,內容似乎如下所示:
AAA BBB CCC
15 1 6
3 83 19
100 4 2
我知道集合中的每個檔案在每個檔案中都有相同的欄位(我的意思是“欄位名稱”)。但我面臨的挑戰是我不知道這些欄位的名稱!我選擇了column_name_list在for回圈中分配欄位名稱的丑陋方式。但在 for 回圈中的每一步,欄位的順序似乎都是不同的。
例如,第一行應該是“6 1 15”,但我在 csv 檔案中看到“15 1 6”。
如何在不知道檔案欄位名稱的情況下讀取集合資料并將其保存在 Pandas 資料幀(使用 Python)中?
uj5u.com熱心網友回復:
下面的代碼似乎解決了這個問題:
import pandas as pd
from google.cloud import firestore
db = firestore.Client()
users = list(db.collection(u'users').stream())
users_dict = list(map(lambda x: x.to_dict(), users))
df = pd.DataFrame(users_dict)
我在這里找到了:https : //gist.github.com/romicofre/ee80100b62b5fdbed42218e8239df94e
任何其他方法/解決方案都非常受歡迎!
uj5u.com熱心網友回復:
只需添加一個orderBy.
看看https://www.npmjs.com/package/firebase-firestore-helper中的orderBy函式
免責宣告:我是這個庫的創建者。它有助于在 Firebase Firestore 中操作物件(并添加快取)
享受!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/366350.html
標籤:Python 熊猫 火力基地 数据框 谷歌云firestore
