【问题标题】:Remove NaT values while inserting data into mongo using pymongo使用 pymongo 将数据插入 mongo 时删除 NaT 值
【发布时间】:2020-09-12 13:04:01
【问题描述】:

有一个带有值的df


name    date

tom    2019-12-10 07:44:03.733
mark   NaT

如果我试试这个:


data = df.to_dict("records")

mydb.test.insert_many(data)

我收到此错误:

ValueError: NaTType does not support utcoffset

如何在没有 NaT 的情况下将此数据发送到 mongodb 并保持列为空而不转换为字符串。

mongodb 中的预期数据:


{
_id:ObjectId(5db012b123a2a1cabcc12345),
name:tom,
date:2019-10-23T10:55:50.569+00:00
}


{
_id:ObjectId(5db012b123a2a1cabcc12346),
name:mark
}


【问题讨论】:

    标签: python pandas mongodb pymongo


    【解决方案1】:

    您可以将NaT 转换为None,如下所示:

    如果您的 df['date'] 不是 datetime 列,请将其转换为一列。

    df['date'] = pd.to_datetime(df['date'])
    
    df['date'] = df['date'].astype(object).where(df['date'].notnull(), None)
    

    然后你可以把这个插入mongo

    【讨论】:

    • 我在 mongo 中收到 date:null
    • 是的,对于该记录,您将在 mongo 中获得 datenull。数据库将None 表示为null
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    相关资源
    最近更新 更多