gpt4 book ai didi

python - Pandas - 将数据框插入 MongoDB

转载 作者:可可西里 更新时间:2023-11-01 09:56:57 24 4
gpt4 key购买 nike

我正在尝试将数据框插入 MongoDB。每行应该是一个文档。

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。使用 a.empty、a.bool()、a.item()、a.any() 或 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 inheritance from collections.MutableMapping

最佳答案

你非常接近,我们可以重新使用你的代码。

注意,我们仍然使用pymongo.MongoClientpandas.DataFrame.to_dict ,在后者中添加了一个参数。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' 输出是一个字典列表,与 insert_many 接受的格式相同。此外,作为奖励 - 与 to_json 相比,to_dict 对于日期时间类型的列表现更好!

关于python - Pandas - 将数据框插入 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49221550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com