问题描述:在利用pandas对excel数据表进行提取的时候,我要对里面的时间进行分析,然后发现当我想逐个取出年、月、日、星期的时候报错了,错误如下:
意思是str类型的对象没有year这个属性,后来发现,虽然我读进来是个对象,但是却忽略了一个细节,就是在这里需要的是具体的时间戳对象,读出来的却是str对象,所以会报这个错。
解决方案:
将读出来的时间对象利用pandas进行时间戳转换之后再进行使用。
import pandas as pd
#读取数据表,相对路径
order = pd.read_table('meal_order_info.csv',sep=',',encoding='gbk')
print(order)
print('befor',type(order['lock_time']))#<class 'pandas.core.series.Series'>
print('befor',order['lock_time'].dtypes)#object
print('befor',type(order['lock_time'][0]))#befor <class 'str'>
#转换时间戳
order['lock_time'] = pd.to_datetime(order['lock_time'])
print(type(order['lock_time'][0]))#<class 'pandas._libs.tslibs.timestamps.Timestamp'>
#年、月、日、星期
year = [i.year for i in order['lock_time']]
month = [i.month for i in order['lock_time']]
day = [i.day for i in order['lock_time']]
hour = [i.hour for i in order['lock_time']]
这是转换后拿到的年,注意得到的是一个数组。