0

在 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

我知道如何获得理想的结果,但我想了解为什么会这样。

4

0 回答 0