在 pandas='1.1.5' 上运行,numpy='1.19.5'
当数据框中有多个列并尝试将时间列从字符串转换为日期时间时会发生这种情况:
df = pd.DataFrame({'times':['2021-05-01','2021-05-02','2021-05-03',np.nan],'other':['a','aa','abc','asd']})
# df = df.loc[:,['times']] # option 1
# df['times2'] = df.loc[:,['times']].astype(np.datetime64) # option 2
df.loc[:,['times']] = df.loc[:,['times']].astype(np.datetime64)
当我运行它并打印出数据框时:
times other 0 1619827200000000000 a 1 1619913600000000000 aa 2 1620000000000000000 abc 3 None asd
当我取消注释选项 1 时,我得到了想要的结果
times 0 2021-05-01 1 2021-05-02 2 2021-05-03 3 NaT
奇怪的是,当我取消注释选项 2(再次注释选项 1)时,我也得到了想要的结果:
times other times2 0 2021-05-01 a 2021-05-01 1 2021-05-02 aa 2021-05-02 2 2021-05-03 abc 2021-05-03 3 NaT asd NaT
我知道如何获得理想的结果,但我想了解为什么会这样。