Python 如何使用pymongo在mongodb中将整列从字符串类型转换为日期类型

Python 如何使用pymongo在mongodb中将整列从字符串类型转换为日期类型,python,pandas,mongodb,date,pymongo,Python,Pandas,Mongodb,Date,Pymongo,我的数据由一百万行组成。示例如下所示: _id:object("603678958a6eade21c0790b8") id1:3758 date2:2010-01-01 time3:00:05:00 date4 :2009-12-31 time5:19:05:00 id6 :2 id7:-79.09 id8:35.97 id9:5.5 id10:0 id11:-99999 id12

我的数据由一百万行组成。示例如下所示:

_id:object("603678958a6eade21c0790b8")
    id1:3758
    date2:2010-01-01
    time3:00:05:00
    date4 :2009-12-31
    time5:19:05:00
    id6 :2
    id7:-79.09
    id8:35.97
    id9:5.5
    id10:0
    id11:-99999
    id12 :0
    id13 :-9999
    c14:"U"
    id15:0
    id16:99
    id17:0
    id18:-99
    id19:-9999
    id20:33
    id21:0
    id22:-99
    id23:0
    df['date4'] = df['date4'].astype('datetime64[ns]') 
    df['date2'] = df['date2'].astype('datetime64[ns]') 

    
    df['time3'] = df['time3'].apply(lambda x:datetime.datetime.strptime(x[0]+x[1]+":"+x[2]+x[3], '%H:%M'))
    df['time5'] = df['time5'].apply( lambda x: datetime.datetime.strptime(x[0] + x[1] + ":" + x[2] + x[3], '%H:%M'))

    df['date2'] = df['date2'].apply(lambda x: arrow.get(x).format("YYYY-MM-DD"))
    df['date4'] = df['date4'].apply(lambda x: arrow.get(x).format("YYYY-MM-DD"))
    df['time3'] = df['time3'].apply(lambda x: arrow.get(x).format("HH:mm:ss"))
    df['time5'] = df['time5'].apply(lambda x: arrow.get(x).format("HH:mm:ss"))
问题是date2和date4是我想要的形式,但它们是字符串,我想将它们转换为date。 我使用的代码如下所示:

_id:object("603678958a6eade21c0790b8")
    id1:3758
    date2:2010-01-01
    time3:00:05:00
    date4 :2009-12-31
    time5:19:05:00
    id6 :2
    id7:-79.09
    id8:35.97
    id9:5.5
    id10:0
    id11:-99999
    id12 :0
    id13 :-9999
    c14:"U"
    id15:0
    id16:99
    id17:0
    id18:-99
    id19:-9999
    id20:33
    id21:0
    id22:-99
    id23:0
    df['date4'] = df['date4'].astype('datetime64[ns]') 
    df['date2'] = df['date2'].astype('datetime64[ns]') 

    
    df['time3'] = df['time3'].apply(lambda x:datetime.datetime.strptime(x[0]+x[1]+":"+x[2]+x[3], '%H:%M'))
    df['time5'] = df['time5'].apply( lambda x: datetime.datetime.strptime(x[0] + x[1] + ":" + x[2] + x[3], '%H:%M'))

    df['date2'] = df['date2'].apply(lambda x: arrow.get(x).format("YYYY-MM-DD"))
    df['date4'] = df['date4'].apply(lambda x: arrow.get(x).format("YYYY-MM-DD"))
    df['time3'] = df['time3'].apply(lambda x: arrow.get(x).format("HH:mm:ss"))
    df['time5'] = df['time5'].apply(lambda x: arrow.get(x).format("HH:mm:ss"))
我需要在插入之前或之后转换它们吗?
有人知道我是怎么做到的吗?

如果是我,我想把date2/time3和date4/time5合并成一列,如下所示:

df['date2'] = (df['date2']+'T'+df['time3']).astype('datetime64')
df['date4'] = (df['date4']+'T'+df['time5']).astype('datetime64')

如果我创建的“新”日期2和日期4将是时间戳类型?或者我需要强制转换它?请看代码。它用一个已转换为datetime64的列替换date2和date4。是的,你说得对。谢谢!!