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

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

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)

在使用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'>

因此,为了获取后面的时间,使用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

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

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

运行结果:
2019-05-05 10:49:14.698000
10

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

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)

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

你可能感兴趣的:(pandas学习)