我正在使用熊猫数据框,我需要在不使用循环的情况下将一整列纪元时间戳转换为人类时间

Posted

技术标签:

【中文标题】我正在使用熊猫数据框,我需要在不使用循环的情况下将一整列纪元时间戳转换为人类时间【英文标题】:I'm using pandas dataframe and I need to convert an entire column of epoch time stamps to human time without using a loop 【发布时间】:2019-01-09 22:33:26 【问题描述】:

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

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

有人可以建议一种没有循环且更快的方法吗?

【问题讨论】:

你能添加一些数据样本吗? 时间响应字节 0 1514772306.266 0 396 1 1514772306.806 0 393 2 1514772306.808 0 393 【参考方案1】:

你可以简单地使用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 的代码

【讨论】:

以上是关于我正在使用熊猫数据框,我需要在不使用循环的情况下将一整列纪元时间戳转换为人类时间的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用数据框的情况下将一行分解为多行?

如何在不丢失值的情况下将 json 解析为 pandas 数据框? [复制]

如何在不丢失setfocus的情况下将光标设置到文本框的末尾?

如何在不循环的情况下将数组的内容复制到 C++ 中的 std::vector?

如何在不复制列标签的情况下将多个数据框写入同一张表

无法在不覆盖的情况下将 R 数据框附加到现有 Excel 中