Решение в npandas 0.25.0:
При необходимости установить новые значения для существующих Series
по индексу добавленного Series
использовать:
ser.loc[new_ser.index] = new_ser
print (ser)
0 2019-01-01 09:20:00-04:00
1 2019-01-02 09:20:00-04:00
2 2019-01-01 09:55:11-05:00
3 2019-01-04 09:20:00-04:00
4 2019-01-05 09:20:00-04:00
Name: a, dtype: object
Другое решение с mask
, но работает, только если True
s сопоставляет индексы значений с индексом добавленной new_ser
:
ser.loc[mask_new_ser] = new_ser
Но из-за того, что разные часовые пояса теряют datetime и получают Timestamp
s объектов:
print (ser.apply(type))
0 <class 'pandas._libs.tslibs.timestamps.Timesta...
1 <class 'pandas._libs.tslibs.timestamps.Timesta...
2 <class 'pandas._libs.tslibs.timestamps.Timesta...
3 <class 'pandas._libs.tslibs.timestamps.Timesta...
4 <class 'pandas._libs.tslibs.timestamps.Timesta...
Name: a, dtype: object
Если хотите указать время, возможно преобразование в UTC
:
ser = pd.to_datetime(ser, utc=True)
print (ser)
0 2019-01-01 13:20:00+00:00
1 2019-01-02 13:20:00+00:00
2 2019-01-01 14:55:11+00:00
3 2019-01-04 13:20:00+00:00
4 2019-01-05 13:20:00+00:00
Name: a, dtype: datetime64[ns, UTC]