在sql中比较容易处理类似“近n个月金额之和/最大值/最小值/平均值” 这样的变量,使用sum(case when date then amount else 0 end) 即可,如果是出差在外只能处理离线数据不能使用数据库时,这个时候就要用python去构造时间切片类的特征。整理了自己之前写过的代码,往往都太笨拙和重复。
import pandas as pd
import numpy as np
import time as time
#生成实例数据集
data = pd.DataFrame({'id':['a','a','b','b','a'],
'billdate': ['2018-09-01','2018-08-01','2018-08-01','2018-01-01','2018-11-01'],
'amount':list(np.random.randint(1,100,5)),
'interest':np.random.rand(5),
'dt': ['2018-10-01','2018-10-01','2018-11-01','2018-11-01','2018-10-01']
})
data