我有一个包含日期时间戳的列的数据框(如[1554334020000, 1554334200000, 1554334380000, 1554334560000, 1554334740000]
),我如何将其转换为日期时间格式?
我知道对于单个值可以这样做:
datetime(1970, 1, 1) + timedelta(milliseconds=int(data['Date'].values[0]))
但是如何将其应用到整个列呢?
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
如果您已经有一个系列,您只需要调用 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
或直接分配给列。