我想规范化我的数据帧,但规范化应该每16行进行一次,其中我有16*1550行和17列。我使用以下代码实现了这一点,它给出了一个警告。这是正确的方法吗?
for n in range(1550):
data_features[16*n:16*(n+1)][:] = (data_features[16*n:16*(n+1)][:] - data_features[16*n:16*(n+1)][:].mean())/data_features[16*n:16*(n+1)][:].std()
访问数据帧的方式是错误的。若要修改单元格,必须始终使用loc
或iloc
(或者,如果相关,at
和iat
(,并且从不从列中选择行。如果你想按块进行规范化,你应该按块处理行。因此,一个简单的解决方案可能是:
for n in range(1550):
data_features.iloc[16*n:16*(n+1)] = (
data_features.iloc[16*n:16*(n+1)]
- data_features.iloc[16*n:16*(n+1)].mean()
)/data_features.iloc[16*n:16*(n+1)].std()