|
|

楼主 |
发表于 2019-6-24 14:32:32
|
显示全部楼层
本帖最后由 老笨啊 于 2019-6-24 14:33 编辑
如果对数据进行分组处理,同样类似的方法,一种需要进行for循环,另一种则不需要。。
第一种:
- def standard(x,i):
- x[i] = (x[i]-x[i].mean())/x[i].std()
- return x
- data = data.groupby('ID').apply(standard,data1.columns[2:]) #这种针对ID先分组后,分别进行标准化处理,就不需要进行for循环处理,而直接传入列即可
复制代码
第二种:
- def insert(x,i):
- if x[i].isnull().sum() > x.shape[0]/2: #缺失值超过一半以上,直接填充指定值
- x[i] = x[i].fillna(0) #其余字段填充数值0
- else:
- x[i] = x[i].interpolate(method='linear',limit_direction = 'both')
- return x
- for i in data.columns[2:]:
- data = data.groupby('ID').apply(insert,i) #这种就无法直接传入参数,而必须采用for循环的方法,否则报错:提示第二行对比的数据格式不对:The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
复制代码
我在一楼的问题,是不需要进行分组,来填充数值的。。这里的第二种,是需要进行分组处理的。 |
|