遇到的问题: 一个数据表的两列,原始数据为float64,如20150101.0
需要求两个日期的差值,判断是否超过多少天(9)
一些基本的知识: 查看Date列有多少行的缺失值 off_train['Date'].isnull().sum() 选择任意行出现空值的数据 off_train[off_train.T.isnull().any()] 判断这一列所有行是否是空值 off_train['Coupon_id'].isnull().values
解决方法:
由于是要计算差值所以两者均不能为null。 Date_temp=off_train[off_train['Date'].notnull()]['Date'] Received_temp=off_train[off_train['Date_received'].notnull()&off_train['Date'].notnull()]['Date_received'] 也就是过滤一下数据,使用逻辑与过滤掉多列 过滤数据还经常使用到的方法是:isin()方法
去除小数点转换为str Date_temp=Date_temp.astype(int) Received_temp=Received_temp.astype(int) Date_temp=pd.to_datetime(Date_temp.astype(str)) Received_temp=pd.to_datetime(Received_temp.astype(str))
计算差值,并判断 Date_diff=Date_temp-Received_temp result_diff=np.where(Date_diff<=pd.Timedelta(days=9),'1','0')
