Это потому, что по умолчанию вы получаете время в UTC. Однако в функции, которую вы конвертировали, в вашей функции с помощью localtime
вы можете сделать это напрямую, как показано ниже.
pd.to_datetime(df.times,unit='ms').dt.tz_localize('UTC').dt.tz_convert('Asia/Shanghai').dt.strftime('%Y-%m-%d %H:%M:%S')
Разницу в значениях можно увидеть, если запустить коды ниже
df= pd.DataFrame({'times':'1571305233056'},index=['A'])
print(pd.to_datetime(df.times,unit='ms'))
print(pd.to_datetime(df.times,unit='ms').dt.tz_localize('UTC').dt.tz_convert('Asia/Kolkata'))
print(pd.to_datetime(df.times,unit='ms').dt.tz_localize('UTC').dt.tz_convert('Europe/Berlin'))
print(pd.to_datetime(df.times,unit='ms').dt.tz_localize('UTC').dt.tz_convert('Asia/Shanghai'))
print(pd.to_datetime(df.times,unit='ms').dt.tz_localize('UTC').dt.tz_convert('Asia/Shanghai').dt.strftime('%Y-%m-%d %H:%M:%S'))
Выход
A 2019-10-17 09:40:33.056
Name: times, dtype: datetime64[ns]
A 2019-10-17 15:10:33.056000+05:30
Name: times, dtype: datetime64[ns, Asia/Kolkata]
A 2019-10-17 11:40:33.056000+02:00
Name: times, dtype: datetime64[ns, Europe/Berlin]
A 2019-10-17 17:40:33.056000+08:00
Name: times, dtype: datetime64[ns, Asia/Shanghai]
A 2019-10-17 17:40:33
Name: times, dtype: object
Вы можете найти список всех часовых поясов, доступных с
import pytz
pytz.all_timezones