为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

一只名叫tom的猫 2021-06-11 18:46:34
与其说是一个问题,不如说是让我感到困惑的东西。我有一列日期,看起来像这样:0              NaT1       1996-04-012       2000-03-013              NaT4              NaT5              NaT6              NaT7              NaT8              NaT我想将它的 NaT 转换为静态值。(假设我将熊猫导入为 pd,将 numpy 导入为 np)。如果我做:mydata['mynewdate'] = mydata.mydate.replace(    np.NaN, pd.datetime(1994,6,30,0,0))一切都很好,我得到:0       1994-06-301       1996-04-012       2000-03-013       1994-06-304       1994-06-305       1994-06-306       1994-06-307       1994-06-308       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:001         8283168000000000002         9518688000000000003        1994-06-30 00:00:004        1994-06-30 00:00:005        1994-06-30 00:00:006        1994-06-30 00:00:007        1994-06-30 00:00:008        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:001         8283168000000000002         9518688000000000003        1994-06-30 00:00:004        1994-06-30 00:00:005        1994-06-30 00:00:006        1994-06-30 00:00:007        1994-06-30 00:00:008        1994-06-30 00:00:00请注意(不要问):是的,我有一个更好的解决方案来替换空值。这个问题不是关于替换空值(正如标题所表明的那样),而是关于 numpy where 处理日期的方式。我问是因为我将有更复杂的条件来选择将来要替换的日期,并认为 numpy 在哪里可以完成这项工作。有任何想法吗?
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

这是由于 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  mynewdate

0        NaT 1994-06-30

1 1996-04-01 1996-04-01

2 2000-03-01 2000-03-01

3        NaT 1994-06-30

4        NaT 1994-06-30

5        NaT 1994-06-30

6        NaT 1994-06-30

7        NaT 1994-06-30

8        NaT 1994-06-30


查看完整回答
反对 回复 2021-06-22
  • 2 回答
  • 0 关注
  • 236 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信