如何切片pandas.Series类型为int

时间:2015-06-09 10:39:12

标签: python python-3.x pandas

我的pandas.Series是一个5位数的整数。前三位数是纪元的天数,最后两位是半小时。我想切片整数序列,这样我有两个Series分别有前3位和后2位。

这是一种方法,需要两种类型的转换:

import pandas as pd    
days_hours = pd.Series(npr.randint(low=1e4, high=99999, size=1000))
days = days_hours.astype('str').str.slice(start=0, stop=3).astype('int64')
hours = days_hours.astype('str').str.slice(start=3, stop=5).astype('int64')

这是非常耗时的,因为我的Series平均每个是25e6行(有6个这样的Series s)。有没有办法可以避免类型转换?

我尝试了一种替代解决方案,该问题涉及apply lambda函数Series的每个元素,但需要更长的时间。

1 个答案:

答案 0 :(得分:3)

使用整数除法和模运算符进行算术运算会快得多:

days = days_hours // 100

hours = days_hours % 100