【发布时间】:2022-02-20 23:01:23
【问题描述】:
我在一列中有一系列日期和时间数据,无法弄清楚如何将时间戳更改为给定格式的日期时间(来自 %Y/%m/%d %H:%M:$S.%f到 %Y/%m/%d %H:%M),下面显示的是我的工作表、代码、结果和我的尝试。
这是数据
我有这个
dataset_train = pd.read_excel('2btc_usdt.xlsx',sheet_name=0)
datelist_train = list(dataset_train['datetime'])
print(datelist_train)
结果
[Timestamp('2017-08-17 13:00:00'), Timestamp('2017-08-17 14:00:00'),
Timestamp('2017-08-17 15:00:00.005000'), Timestamp('2017-08-17 16:00:00.010000'), Timestamp('2017-08-17 17:00:00.015000'), Timestamp('2017-08-17 18:00:00.020000'),
Timestamp('2017-08-17 19:00:00.025000'), Timestamp('2017-08-17 20:00:00.030000'), Timestamp('2017-08-17 21:00:00.035000'), Timestamp('2017-08-17 22:00:00.040000'), Timestamp('2017-08-17 23:00:00.045000'), Timestamp('2017-08-18 00:00:00.050000'),
Timestamp('2017-08-18 01:00:00.055000'), Timestamp('2017-08-18 02:00:00.060000'), Timestamp('2017-08-18 03:00:00.065000'), Timestamp('2017-08-18 04:00:00.070000'), Timestamp('2017-08-18 05:00:00.075000'), Timestamp('2017-08-18 06:00:00.080000'), Timestamp('2017-08-18 07:00:00.085000'), Timestamp('2017-08-18 08:00:00.090000'),
Timestamp('2017-08-18 09:00:00.095000'), Timestamp('2017-08-18 10:00:00.100000'), Timestamp('2017-08-18 11:00:00.105000'), Timestamp('2017-08-18 12:00:00.110000'), Timestamp('2017-08-18 13:00:00.115000'), Timestamp('2017-08-18 14:00:00.120000'),
Timestamp('2017-08-18 15:00:00.125000'), Timestamp('2017-08-18 16:00:00.130000'), Timestamp('2017-08-18 17:00:00.135000'), Timestamp('2017-08-18 18:00:00.140000'), Timestamp('2017-08-18 19:00:00.145000'), Timestamp('2017-08-18 20:00:00.150000'),
Timestamp('2017-08-18 21:00:00.155000'), Timestamp('2017-08-18 22:00:00.16..............
我尝试过的
#Attempt no1
datelist_train = list(dataset_train['date'])
datelist_train = [dt.datetime.strptime( date, "%Y/%m/%d %H:%M").date() for date in datelist_train]
#it just convert list to series and not changing the format
#Attempt no2
datelist_train = list(dataset_train['datetime'])
datelist_train = pd.to_datetime(datelist_train,unit='ms')
#i get message: unit='ms' not valid with non-numerical val='2017-08-17 13:00:00'
【问题讨论】:
-
首先,datetime 是一种数据类型(结构),而不是一种格式(如用于在字符串中表示日期/时间的格式)。然后,您的数据框的“日期时间”列已经是数据类型日期时间(其元素是 pd.Timestamp)。看来您想精确到分钟(条秒等)-您可以像
dataset_train['datetime'].dt.floor('min')那样做。这是你需要的吗? -
嗨,是的,这就是我需要的(切断毫秒),谢谢你帮助社会!
标签: python excel pandas datetime