Как игнорировать None при конвертации даты?

DataFrame:

df = pd.DataFrame({'DEP_DATE': [4274696742, None, -1544861678, 48960604955]})

Преобразовывается так:

df["DEP_DATE"] = (df["DEP_DATE"].apply(lambda x: pd.Period(datetime.datetime.utcfromtimestamp(x).strftime("%d-%m-%Y %H:%M:%S"))))

Должно получиться:

0    2105-06-17 15:45:42
1    nan
2    1921-01-17 21:45:22
3    3521-07-02 16:02:35

Ответы (1 шт):

Автор решения: MaxU

Попробуйте так:

from datetime import datetime as DT

df["res"] = pd.PeriodIndex(
    [DT.utcfromtimestamp(x).strftime("%Y-%m-%d") if pd.notna(x) else np.nan
     for x in df["DEP_DATE"]], 
    freq="D")

результат:

In [25]: df
Out[25]:
       DEP_DATE         res
0  4.274697e+09  2105-06-17
1           NaN         NaT
2 -1.544862e+09  1921-01-17
3  4.896060e+10  3521-07-02

In [26]: df.dtypes
Out[26]:
DEP_DATE      float64
res         period[D]
dtype: object
→ Ссылка