Pandas将int64存入MongoDB自动转为int32的问题求助
高效解决Pandas int64写入MongoDB转为Long类型的问题
问题根源
Pandas里的int64是numpy数值类型,当数值处于int32范围内时,PyMongo会自动将其映射为MongoDB的int32类型,而非要求的long类型,导致集合校验失败。单纯修改Pandas列类型无法绕过这个自动映射逻辑。
高效解决方案
无需逐行处理数据,直接批量将目标列转换为PyMongo的bson.int64.Int64类型即可,步骤如下:
- 导入bson的Int64类型
from bson.int64 import Int64
- 批量转换DataFrame目标列
# 对整列应用Int64转换,性能远高于逐行处理 df["MY_INT"] = df["MY_INT"].apply(Int64)
- 正常写入MongoDB
collection.insert_many(df.to_dict('records'))
原理说明
通过将numpy int64数值包装为PyMongo提供的Int64对象,PyMongo会明确将其识别为MongoDB的long类型,完全符合集合的bsonType校验规则,同时批量操作的性能和原生insert_many几乎一致。
内容的提问来源于stack exchange,提问作者LSB
相关产品推荐
相关产品推荐

