我的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
的每个元素,但需要更长的时间。
答案 0 :(得分:3)
使用整数除法和模运算符进行算术运算会快得多:
days = days_hours // 100
hours = days_hours % 100