linux datetime int64,将int64系列转换为datetime的最有效方法是什么?

设置场景:我有一个dtype int64的Series对象。我需要将这些转换为只带日期的datetime对象(不包括小时和秒)

我现在要做的是。。。在

在元首()=0 1382400000

1 1382400000

2 1382054400

3 1381708800

4 1380758400

Name: da_0, dtype: int64

此功能:

^{pr2}$

当我处理相关系列时,我会打电话给:foo = foo.apply(lambda x: convert_stamp_to_date(x))

这给了我正确的解决方案:0 2013-10-22 00:00:00

1 2013-10-22 00:00:00

2 2013-10-18 00:00:00

3 2013-10-14 00:00:00

4 2013-10-03 00:00:00

Name: da_0, dtype: datetime64[ns]

这给了我想要的,但是我发现它很慢(应该是这样,对吧?因为这只是一种幼稚的工作方式)。在

对于长度为~5000的小系列对象,平均需要~27ms进行转换。不好。坏。。。但是,我可以很容易地得到一系列对象,这些对象可以增长到数百万行。对于这些,我看到转换时间在1-2分钟范围内。和我用同样大小的序列和数据帧做的其他事情相比,这似乎太慢了。在

我的第一个想法是尝试使用np.vectorize对函数进行伪矢量化。然而,这实际上使转换速度慢了10倍。在vconvert_stamp_to_date = np.vectorize(convert_stamp_to_date)

foo = foo.apply(lambda x: vconvert_stamp_to_date(x))

虽然这仍然给了我正确的答案,但它将较小系列对象的转换时间提高到350毫秒左右,而对于我使用的较大系列对象,我不得不在脚本中按ctrl+c组合键,因为它花费的时间太长。在

将时间戳转换为datetime对象会成为程序的瓶颈,这对我来说似乎有点可笑:(我必须相信,在某些地方有一种更有效的方法来实现这一点)。谁能给我指一下正确的方向吗?目前,我已经耗尽了我所有的熊猫法力。如果你一直读到这里,我很感激。在

谢谢。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值