如何仅从时间戳获取时间?

6jjcrrmo  于 2021-07-13  发布在  Java
关注(0)|答案(5)|浏览(284)

我的Dataframe中有一列(创建于),其时间戳如下所示:

Created AT
1) 2021-04-19T09:14:10.526Z
2) 2021-04-19T09:13:06.809Z
3) 2021-04-19T09:13:06.821Z

我只想从上面的列中提取时间。它应该显示:9:14:8等等,如何提取这个?

zf9nrax1

zf9nrax11#

df['time'] = pd.to_datetime(df['Created AT'])
print(df['time'].dt.time)

在第一行,将datetime转换为对象并写入一个新列。
第二,我们从datetime对象获取时间

sr4lhrrt

sr4lhrrt2#

如果日期列是字符串,则需要将其转换为日期时间,然后获取时间的子字符串:

df = pd.DataFrame(data = {"Created At":["2021-04-19T09:14:10.526Z","2021-04-19T09:14:10.526Z"]})
df['Created At'] = pd.to_datetime(df['Created At'])
df['Created At'] = df['Created At'].dt.time.astype(str).str[:8]
okxuctiv

okxuctiv3#

转换为datetime并使用strftime完全按照您的喜好格式化。

data = ['2021-04-19T09:14:10.526Z',
        '2021-04-19T09:13:06.809Z',
        '2021-04-19T09:13:06.821Z']
df = pd.DataFrame(data=data, columns=['Created AT'])
df['Created AT'] = pd.to_datetime(df['Created AT']).dt.strftime('%H:%M:%S')
print(df)

  Created AT
0   09:14:10
1   09:13:06
2   09:13:06
lymgl2op

lymgl2op4#

首先将列转换为datetime格式(如果尚未使用该格式):

df['Created AT'] = pd.to_datetime(df['Created AT'])

然后,添加新列 time 格式设置依据 .dt.strftime() 如下所示(如果您不需要nano second部分):

df['time'] = df['Created AT'].dt.strftime('%H:%M:%S')

print(df)

                        Created AT      time
0 2021-04-19 09:14:10.526000+00:00  09:14:10
1 2021-04-19 09:13:06.809000+00:00  09:13:06
2 2021-04-19 09:13:06.821000+00:00  09:13:06
6tdlim6h

6tdlim6h5#

我有办法解决你的问题。它可以有多个解决方案,但在这里我给出了一些解决方案这里使用时间,日期时间
你可以使用

import time
import datetime
s = '2021-04-19T09:14:10.526Z'
t = s.split('T')[1].split('.')[0]
print(t)

为了得到它的时间戳,再做一行

print(datetime.datetime.strptime(t,"%H:%M:%S"))

相关问题