我使用的是pandas数据帧,我需要在不使用循环的情况下将一整列的历元时间戳转换为人类时间

2024-04-19 10:40:45 发布

您现在位置:Python中文网/ 问答频道 /正文

目前我正在使用for循环,这需要很多时间:

for i in range (0,len(df)):
    df['time1[i]']=(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(df.time[i])))

有人能建议一种没有循环和更快的方法吗?你知道吗


Tags: 方法indfforlentime时间range
1条回答
网友
1楼 · 发布于 2024-04-19 10:40:45

您只需将pd.to_datetimeunit = 'ms'一起使用即可。如果您有其他时间单位,如秒、分钟,则可以在单位部分中指定。你知道吗

time
1527910027791
1527911500516

df['time'] = pd.to_datetime(df['time'], unit='ms')
print(df)

2018-06-02 03:27:07.791
2018-06-02 03:51:40.516

如果您的时间戳是UTC,那么您可以简单地转换为本地时间

df['time'] = pd.to_datetime(df['time'], unit= 'ms').dt.tz_localize('utc') \
    .dt.tz_convert(tz='USE YOUR TIME ZONE HERE').apply \
    (lambda x: datetime.replace(x, tzinfo=None))

如果需要GMT+几个小时之类的信息,那么可以忽略上面使用applylambda的代码

相关问题 更多 >