如何将一列时间戳转换为日期时间? [复制]

Posted

技术标签:

【中文标题】如何将一列时间戳转换为日期时间? [复制]【英文标题】:How to convert a column of timestamps to datetime? [duplicate] 【发布时间】:2019-09-06 23:43:47 【问题描述】:

我有一个数据框,其中有一列日期表示为时间戳(如[1554334020000, 1554334200000, 1554334380000, 1554334560000, 1554334740000])。如何将其转换为日期时间?

我知道你可以做一个单一的值

datetime(1970, 1, 1) + timedelta(milliseconds=int(data['Date'].values[0]))

但如何将其应用于整个列?

【问题讨论】:

【参考方案1】:

如果您(已经)有一个系列,您只需要一个astype 电话:

pd.Series(ts).astype('datetime64[ms]')

0   2019-04-03 23:27:00
1   2019-04-03 23:30:00
2   2019-04-03 23:33:00
3   2019-04-03 23:36:00
4   2019-04-03 23:39:00
dtype: datetime64[ns]

如果这会导致您遇到错误(由于无效值),请使用 to_datetimeerrors='coerce'

pd.to_datetime(ts, unit='ms', errors='coerce')

DatetimeIndex(['2019-04-03 23:27:00', '2019-04-03 23:30:00',
               '2019-04-03 23:33:00', '2019-04-03 23:36:00',
               '2019-04-03 23:39:00'],
              dtype='datetime64[ns]', freq=None)

返回DatetimeIndex。您可以在结果上调用to_series 或直接分配给列。

【讨论】:

【参考方案2】:

使用pandas.to_datetime 传递参数unit='ms'

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

示例

df = pd.DataFrame('timestamp': [1554334020000, 1554334200000, 1554334380000,
                                 1554334560000, 1554334740000])
print(df)

[出]

       timestamp
0  1554334020000
1  1554334200000
2  1554334380000
3  1554334560000
4  1554334740000

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

[出]

            timestamp
0 2019-04-03 23:27:00
1 2019-04-03 23:30:00
2 2019-04-03 23:33:00
3 2019-04-03 23:36:00
4 2019-04-03 23:39:00

【讨论】:

以上是关于如何将一列时间戳转换为日期时间? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

SQLServer时间戳转日期格式(13位时间戳)

MySQL中日期和时间戳互相转换的函数和方法

js把时间戳只转换为“时“和”分”

将一列日期数字转换为缩写月份

使用JS,时间戳数值怎么转换成日期

Hive日期格式转换详解(包含13位时间戳转毫秒时间)