Python pandas DataFrame をソースとするローカル MongoDB へのかなり単純な挿入を行っています。基本的に、datframe.loc[n].to_dict() を呼び出して、df から直接辞書を取得しています。「オブジェクトをエンコードできません」というメッセージが表示される挿入を試みるまで、これまでのところすべて問題ありません。dict を直接見ると、すべてが良好に見えることが示されましたが、(この質問を書いているときに) dict の各タイプを確認することに気づき、長い ID 番号が単純な int ではなく numpy.int64 に変換されていることがわかりました (これは、 int が正常に挿入されるため、dict を手動で作成しました)。
そのため、この動作をオーバーライドできる to_dict への引数の追加に関する pandas のドキュメント内で何も見つけることができませんでした。そんなことに頼らなくても。
問題は、MongoDB に挿入するためにデータフレームの行を dict に変換する方法です。許容可能なコンテンツ タイプのみを使用していることを確認します。または、ここでさらにバックアップして、より簡単なアプローチを使用してMongo内のドキュメントになるデータフレーム?
ありがとう
リクエストに応じて、私が使用しているデータのサンプルを投稿に追加します。
{'Account Created': 'about 3 hours ago',
'Followers': 13,
'Following': 499,
'Screen Name': 'XXXXXXXXXX',
'Status': 'Alive',
'Tweets': 12,
'Twitter ID': 0000000000L}
これは、挿入時に失敗した to_dict 出力から直接。これを「テスト」辞書に直接コピーしたところ、完全に正常に機能しました。各dictの値を出力すると、次のようになります...
to_dict = ['Alive', 'a_aheref77', 'about 3 hours ago', 12, 13, 499, 0000000000L, ObjectId('551bd8cfae89e9370851aa64')]
test = ['Alive', 'XXXXXXXX', 'about 3 hours ago', 499, 13, 12, 0000000000, ObjectId('551bd6fdae89e9370851aa63')]
唯一の違い (私が知る限り) は Long int です。興味深いことに、Mongo を挿入すると、そのフィールドがドキュメント内で「Number Long」として表示されます。これがいくつかを明確にするのに役立つことを願っています。