python-3.x 如何在Pandas中将字符串转换为时间戳

juud5qan  于 2023-03-20  发布在  Python
关注(0)|答案(2)|浏览(127)

我有以下数据集

OPEN TIME  CLOSE TIME
0   09:44:00   10:07:00
1   10:07:00   11:01:00
2   11:05:00   13:05:00

但是这里的时间戳是字符串格式的,我怎么把它们转换成时间格式呢?

yqlxgs2m

yqlxgs2m1#

结束日期时间

df['Open'] = pd.to_datetime(df['OPEN TIME'],format= '%H:%M:%S' ).dt.time
df['Close'] = pd.to_datetime(df['CLOSE TIME'],format= '%H:%M:%S' ).dt.time
tag5nh1u

tag5nh1u2#

可以使用apply在一行程序中转换两列。

df = df.assign(**df[['OPEN TIME', 'CLOSE TIME']].apply(pd.to_datetime, format='%H:%M:%S'))

要获取不带日期的时间,请使用以下命令:

# 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))

这会将每个字符串转换为datetime.time对象。但是,由于datetime.time没有对应的panda dtype,因此很难利用矢量化操作。例如,不可能找到作为datetime.time对象的OPEN TIME和CLOSE TIME之间的时间差(所以字符串没有太大的改进),但是如果它们是datetime64,这是可能的。例如,下面的代码创建了datetime64

df1 = df.assign(**df[['OPEN TIME', 'CLOSE TIME']].apply(pd.to_datetime, format='%H:%M:%S'))
df1['CLOSE TIME'] - df1['OPEN TIME']

0   0 days 00:23:00
1   0 days 00:54:00
2   0 days 02:00:00
dtype: timedelta64[ns]

相关问题