如何将一列时间戳转换为日期时间? [复制]
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_datetime
和 errors='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
【讨论】:
以上是关于如何将一列时间戳转换为日期时间? [复制]的主要内容,如果未能解决你的问题,请参考以下文章