【问题标题】:How to get the time only from timestamps?如何仅从时间戳中获取时间?
【发布时间】:2021-07-20 18:27:22
【问题描述】:

我的 DataFrame 中有一个 (created AT) 列,其时间戳如下所示:

      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 等 这个怎么提取?

【问题讨论】:

  • 使用df['created_at'].dt.time
  • 请注意,pandas 不会使用内置的 datetime64 数据类型单独处理日期和时间(它始终是日期 和 时间)。如果您想在 pandas 中有效地处理日期和时间,请不要截断日期。

标签: python pandas date datetime time


【解决方案1】:

我对您的问题有一个解决方案。它可以有多种解决方案,但在这里我使用时间 DateTime 给出一些解决方案


你可以使用

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

【讨论】:

    【解决方案2】:

    首先将列转换为日期时间格式(如果尚未采用该格式):

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

    然后,添加新列time,格式为.dt.strftime(),如下所示(如果您不想要纳秒部分):

    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
    

    【讨论】:

      【解决方案3】:

      转换为日期时间并使用 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
      

      【讨论】:

        【解决方案4】:

        如果你的日期列是一个字符串,你需要将它转换为日期时间,然后取一个时间的子字符串:

        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]
        

        【讨论】:

          【解决方案5】:
          df['time'] = pd.to_datetime(df['Created AT'])
          print(df['time'].dt.time)
          

          在第一行,将日期时间转换为对象并写入新列。

          第二个,我们从 datetime 对象中获取时间

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-07-10
            • 1970-01-01
            • 2014-11-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多