У меня есть pandas.Series
, который представляет собой целое число с 5 цифрами. Первые 3 цифры - дни от эпохи, а последние 2 - половинные часы. Я хочу обрезать целую серию, так что у меня есть два Series
с первыми тремя цифрами и двумя последними цифрами соответственно.Как отрезать pandas.Series типа int по длине
Вот один из способов сделать это, что требует два преобразования типа:
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). Есть ли способ избежать преобразования типов?
Я попробовал альтернативное решение, которое включало в себя функцию lambda
для каждого элемента Series
, но это заняло больше времени.
Этот ответ смотрел мне в лицо - спасибо. Значительные ускорения. – tchakravarty
Значительно более простой код, который также важен – holdenweb