最近在做数据预处理的时候,发现有些细微地方需要注意,当某列数据为object类型时,不能通过字符类型和整数类型的过滤方法,可以先转换一下数据类型。
首先,先看数据字段的类型用test.info()
再看看数据前5行
接下来我想对列hh拆分成具体的小时、分钟、秒(三列),代码编写如下:
test['hh'].str.split(':',expand=True)
将这拆分的三列合并到原数据集中
1.test.join(test['hh'].str.split(':',expand=True))
2.test.join(test['hh'].str.split(':',expand=True).rename(columns={0:'H',1:'M',2:'S'}))
#在1的基础上重命名了
3.test = pd.concat([test, test['hh'].str.split(':', expand=True)], axis=1)#与1等价
另外将三列合并的话可以:
将三列恢复到原来的样子:
接下来,想对day这列日期变成整数形式:
或者将该列类型转换成datetime64
test['day'] = pd.to_datetime(test['day']
#时间类型过滤
test[(test['day']>=pd.datetime(2020,2,23)) & (test['day']<=pd.datetime(2020,2,29))]
找出2020-02-23到2020-02-29之间数据
这个时候test['day']已经是datetime类型。
另外数据类型转换的几个方法:
test['M'].astype(int) 将该列类型变成整数值
pd.to_numeric(test['M'])
pd.to_datetime(test['day'])