Numpy 在哪里将时间戳/日期时间更改为整数

与其说是一个问题,不如说是让我感到困惑的东西。


我有一列日期,看起来像这样:


0              NaT

1       1996-04-01

2       2000-03-01

3              NaT

4              NaT

5              NaT

6              NaT

7              NaT

8              NaT

我想将它的 NaT 转换为静态值。(假设我将熊猫导入为 pd,将 numpy 导入为 np)。


如果我做:


mydata['mynewdate'] = mydata.mydate.replace(

    np.NaN, pd.datetime(1994,6,30,0,0))

一切都很好,我得到:


0       1994-06-30

1       1996-04-01

2       2000-03-01

3       1994-06-30

4       1994-06-30

5       1994-06-30

6       1994-06-30

7       1994-06-30

8       1994-06-30

但如果我这样做:


mydata['mynewdate'] = np.where(

    mydata['mydate'].isnull(), pd.datetime(1994,6,30,0,0),mydata['mydate'])

我得到:


0        1994-06-30 00:00:00

1         828316800000000000

2         951868800000000000

3        1994-06-30 00:00:00

4        1994-06-30 00:00:00

5        1994-06-30 00:00:00

6        1994-06-30 00:00:00

7        1994-06-30 00:00:00

8        1994-06-30 00:00:00

此操作将原始的非空日期转换为整数。我认为可能存在数据类型的混淆,所以我这样做了:


mydata['mynewdate'] = np.where(

    mydata['mydate'].isnull(), pd.datetime(1994,6,30,0,0),pd.to_datetime(mydata['mydate']))

并且仍然得到:


0        1994-06-30 00:00:00

1         828316800000000000

2         951868800000000000

3        1994-06-30 00:00:00

4        1994-06-30 00:00:00

5        1994-06-30 00:00:00

6        1994-06-30 00:00:00

7        1994-06-30 00:00:00

8        1994-06-30 00:00:00

请注意(不要问):是的,我有一个更好的解决方案来替换空值。这个问题不是关于替换空值(正如标题所表明的那样),而是关于 numpy where 处理日期的方式。我问是因为我将有更复杂的条件来选择将来要替换的日期,并认为 numpy 在哪里可以完成这项工作。


有任何想法吗?


一只名叫tom的猫
浏览 237回答 2
2回答

阿晨1998

这是由于 Numpy's datetime64、 Pandas'Timestamp和/或datetime.datetime. 我通过numpy.datetime64从一开始就将替换值设置为 a来修复它。static_date = np.datetime64('1994-06-30')# static_date = np.datetime64(pd.datetime(1994, 6, 30))mydata.assign(    mynewdate=np.where(        mydata.mydate.isnull(),        static_date,        mydata.mydate    ))      mydate  mynewdate0        NaT 1994-06-301 1996-04-01 1996-04-012 2000-03-01 2000-03-013        NaT 1994-06-304        NaT 1994-06-305        NaT 1994-06-306        NaT 1994-06-307        NaT 1994-06-308        NaT 1994-06-30
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python