如何将时间戳列转换为日期时间格式?

6

我有一个包含日期时间戳的列的数据框(如[1554334020000, 1554334200000, 1554334380000, 1554334560000, 1554334740000]),我如何将其转换为日期时间格式?

我知道对于单个值可以这样做:

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

但是如何将其应用到整个列呢?
2个回答

8
使用 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

4

如果您已经有一个系列,您只需要调用 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 或直接分配给列。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接