赞
踩
在进行数据处理时,我想依据表格里的时间来划分出早中晚
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。