后来测试了很多方法,目前已经解决,方法如下:
总结:问题主要出现在直接用pandas读取csv,生成的DataFrame传输到mongodb中不会把时间变成isoDate格式(在我的电脑是这样,其他人不知道会不会)
方法一(可行,但麻烦)
1.通过第三方库:
from dateutil.parser import parse
来转换获得的格式,用pymongo导入mongodb中后,格式不是isoDate格式(这个时候可以通过进入数据库中,输入
#mongo进入需要修改的数据库中
db.pytest.find().forEach(function(element){
element.OrderDate = ISODate(element.OrderDate);
db.pytest.save(element);
});
可以得到isoDate,但太麻烦了……
2.通过第三方库(pendulum)
from pendulum.parser import parse
来进行格式转换,
在pandas中会出现以下反馈:'DateTime' object has no attribute 'nanosecond'
这个问题目前还不明白是什么问题。
3.最终解决方案:
1.pandas读取csv后,把时间列的值重新替换,例如:
import pandas as pd
from dateutil.parser import parse
df = pd.read_csv('test.csv')
df['日期'] = parse('1226')
data = df.to_dict(orient='records')
#然后把data的数据导入mongodb中,即可获得isoDate的数据
原因:直接用pandas读取csv,获取的时间数据后,导入mongodb,但是格式不是isoDate格式。