pandas.to_datetime
будет автоматически анализировать кварталы, но он должен быть в формате 2019Q3
, за которым следует Q и квартал.
Поскольку у вас есть столбец целых чисел с None
, трудно понять, являются ли базовые значения действительно целыми числами или они приводятся к float
, что может привести к путанице при разбивке строк без первой замены.
import pandas as pd
s = df.stamp.astype(str).replace('\.0', '', regex=True) # Remove .replace if truly integer
pd.to_datetime(s.str[0:4] + 'Q' + s.str[-1], errors='coerce')
#0 2019-01-01
#1 2019-04-01
#2 NaT
#3 2019-01-01
#Name: stamp, dtype: datetime64[ns]
Вы получаете немного мусора 'nanQn'
или 'NoneQe'
для пропущенных строк, но, поскольку он станет NaT
, в любом случае, вероятно, это не имеет большого значения.