# assign back to the columns ---- sometimes, this case throws a SettingWithCopyWarning if `df` was filtered from another frame
df[['OPEN TIME', 'CLOSE TIME']] = df[['OPEN TIME', 'CLOSE TIME']].apply(lambda x: pd.to_datetime(x, format='%H:%M:%S').dt.time)
# or call assign and create a new dataframe copy ---- this case never throws a warning
df = df.assign(**df[['OPEN TIME', 'CLOSE TIME']].apply(lambda x: pd.to_datetime(x, format='%H:%M:%S').dt.time))
2条答案
按热度按时间yqlxgs2m1#
结束日期时间
tag5nh1u2#
可以使用
apply
在一行程序中转换两列。要获取不带日期的时间,请使用以下命令:
这会将每个字符串转换为
datetime.time
对象。但是,由于datetime.time
没有对应的panda dtype,因此很难利用矢量化操作。例如,不可能找到作为datetime.time
对象的OPEN TIME和CLOSE TIME之间的时间差(所以字符串没有太大的改进),但是如果它们是datetime64
,这是可能的。例如,下面的代码创建了datetime64
: