当前位置:   article > 正文

利用timetz()函数获取pandas.Timestamp的时分秒

timetz

在进行数据处理时,我想依据表格里的时间来划分出早中晚

import pandas as pd
import time
import datetime

data = pd.read_csv("data.csv")  #读取数据
date['time'] = pd.to_datetime(data['time'],infer_datetime_format=True)  # 将时间转化为datetime

def get_sj( x ):
    time_6 = datetime.datetime.strptime('6:00','%H:%M').time()
    time_12 = datetime.datetime.strptime('12:00','%H:%M').time()
    time_18 = datetime.datetime.strptime('18:00','%H:%M').time()
    xtime = x.timetz()   # 获取时分秒
    if xtime<time_6:
        return '凌晨'
    elif xtime<time_12:
        return '上午'
    elif xtime<time_18:
        return '下午'
    else:
        return '晚上'
    
data['sj'] = data['time'].map(get_sj)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

在使用to_datetime()后,data[‘time’]里的每一个数据都已经转化为pandas._libs.tslibs.timestamps.Timestamp这种数据类型.

dates = ['2017-09-05 10:49:14.016000', '16/01/2018 13:49:14.826000', 'May 5, 2019, 10:49:14.698000', '2019.11.05 13:09:26.217000']
dates = pd.to_datetime(dates)
print('dates的类型是:' , type(dates), '\n dates[2]的类型是:', type(dates[2]))

运行结果: 
dates的类型是: <class 'pandas.core.indexes.datetimes.DatetimeIndex'> 
dates[2]的类型是: <class 'pandas._libs.tslibs.timestamps.Timestamp'>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

因此,为了获取后面的时间,使用Timestamp的函数**timetz()**即可

print('dates[2]为:', dates[2], '  dates[2]的时分秒为:', dates[2].timetz())

运行结果为:
dates[2]为: 2019-05-05 10:49:14.698000   dates[2]的时分秒为: 10:49:14.698000
  • 1
  • 2
  • 3
  • 4

当然,如果只是要实现划分早中晚,大可直接获取小时来判断

print(dates[2])
print(dates[2].hour)   #获取dates[2]的小时

运行结果:
2019-05-05 10:49:14.698000
10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

因此,对于文章一开始的那个函数,可修改为如下:

import pandas as pd

data = pd.read_csv("data.csv")  #读取数据
date['time'] = pd.to_datetime(data['time'],infer_datetime_format=True)  # 将时间转化为datetime

def get_sj( x ):
    xhour = x.hour   # 获取小时
    if xhour <6:
        return '凌晨'
    elif xhour <12:
        return '上午'
    elif xhour <18:
        return '下午'
    else:
        return '晚上'
    
data['sj'] = data['time'].map(get_sj)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

综上,pandas.Timestamp的实现中其实已经有很多写好的函数了,需要的时候可以直接调用,当我们想实现一个功能却不知道用哪个函数时,或许可以先去官网看看说明。以下为pandas.Timestamp的官网说明:
https://pandas.pydata.org/pandas-docs/version/0.23.4/generated/pandas.Timestamp.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/230311
推荐阅读
相关标签
  

闽ICP备14008679号