繁体   English   中英

如何将 int64 列转换为日期时间列

[英]how do i convert int64 column to datetime column

我有一个 pandas dataframe 列“时间”,如下所示:

array([43390, 43599, 43605, 43329, 43330, 43604, 43601, 43332, 43602,....43505], dtype=int64)

我如何将其转换为日期时间格式? 我已经试过了

t_data["DATE"] = pd.to_datetime(t_data["DATE"].astype(str).str.zfill(6), format='%H%M%S').dt.time

但会导致错误

ValueError:未转换的数据仍然存在:0

整数数组看起来像从 Excel 中提取的日期。 每个代表 base_date 之后的天数(在/大约 1901-01-01)。

这是一种在 pandas 中转换为日期的方法:

date_offsets = [43390, 43599, 43605, 43329, 43330, 43604, 43601, 43332, 43602]
base_date = pd.Timestamp('1901-01-01')  # check this!
dates = [
    base_date + pd.DateOffset(date_offset) 
    for date_offset in date_offsets
]

print(dates[0:5])

[Timestamp('2019-10-19 00:00:00'), Timestamp('2020-05-15 00:00:00'), Timestamp('2020-05-21 00:00:00'), Timestamp('2019-08-19 00:00:00'), Timestamp('2019-08-20 00:00:00')]

请检查基准日期!

一种使用pandas.Series.str.findalltimedelta的方法:

from datetime import timedelta

def parse(lis):
    h, m, s = map(int, lis)
    return timedelta(hours=h, minutes=m, seconds=s)

tmp = s.str.zfill(6).str.findall(".{2}")
tmp.apply(parse)

Output:

0   04:34:30
1   04:36:39
2   04:36:05
3   04:33:29
4   04:33:30
5   04:36:04
6   04:36:01
7   04:33:32
8   04:36:02
9   04:35:05
dtype: timedelta64[ns]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM