我正在使用pd.to_datetime()处理时间戳,我发现结果不正确? 然后花时间处理,得到不同的结果。哪个是正确的结果?
import time
import pandas as pd
df=pd.DataFrame({'times':'1571305233056'},index=['A'])
pd.to_datetime(df.times,unit='ms').dt.strftime('%Y-%m-%d %H:%M:%S')
A 2019-10-17 09:40:33
Name: times, dtype: object
def timestamp( times):
time1=float(times/1000)
timearray = time.localtime(time1)
return time.strftime('%Y-%m-%d %H:%M:%S',timearray)
timestamp(int(df['times'])
'2019-10-17 17:40:33'
我希望输出为'2019-10-17 17:40:33'
答案 0 :(得分:0)
这是因为您的第二个将时间转换为本地时间的代码尝试使用此代码,但pd.to_datetime在utc中给出了时间
def timestamp( times):
time1=float(times/1000)
timearray = time.gmtime(time1)
return time.strftime('%Y-%m-%d %H:%M:%ST%Z',timearray)
timestamp(int(df['times']))
或者您可以使用df.tz_localize函数获取大熊猫本地时间
import pandas as pd
import dateutil
df=pd.DataFrame({'times':'1571305233056'},index=['A'])
pd.to_datetime(df.times,unit='ms',).dt.tz_localize(dateutil.tz.tzlocal()).dt.strftime('%Y-%m-%d %H:%M:%ST%Z')
答案 1 :(得分:0)
这是因为默认情况下,您可以使用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