MongoDBにデータフレームを挿入しようとしています。各行は1つのドキュメントである必要があります。
from pymongo import MongoClient
import pandas as pd
client = MongoClient()
col = client['test']['test']
d = {'name': ['Braund', 'Cummings', 'Heikkinen', 'Allen'],
'age': [22,38,26,35],
'fare': [7.25, 71.83, 0 , 8.05],
'survived?': [False, True, True, False]}
df = pd.DataFrame(d)
col.insert_many(df)
ただし、上記のコードはエラーを返します。 ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
変更col.insert_many(df)
するcol.insert_many(df.to_dict())
か、col.insert_many(df.to_json())
原因TypeError: document must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a type that inherits from collections.MutableMapping
あなたは非常に近かったので、コードを再利用できます。
注意、我々はまだ使用pymongo.MongoClient
し、pandas.DataFrame.to_dict
後者で追加1つのPARAMで、。to_dict(orient='records')
その後、
from pymongo import MongoClient
import pandas as pd
client = MongoClient() # Remember your uri string
col = client['test']['test']
df = pd.DataFrame({'name': ['Braund','Cummings','Heikkinen','Allen'],
'age': [22,38,26,35],
'fare': [7.25, 71.83, 0 , 8.05],
'survived?': [False, True, True, False]})
data = df.to_dict(orient='records') # Here's our added param..
col.insert_many(data)
つまり、orient='records'
出力を指定することにより、dictのリストが作成され、同じ形式がinsert_many
。で受け入れられます。また、ボーナスとして、!to_dict
と比較して、日時タイプの列の方が優れていますto_json
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加