我想运行一个代码来检查其中发生了什么,但我无法执行此操作,有一条消息说.ix已被弃用。
outlier = 4 #outlier
for k in np.arange(0,3,1):
wAvg = sum(df.ix[:,1] * df.ix[:,2]) #Weight Average
Std = df.ix[:,2].std()
df.ix[:,2] = (df.ix[:,2]-wAvg)/Std
df.ix[df.ix[:,2] > outlier, 2] = outlier
df.ix[df.ix[:,2] < -outlier, 2] = -outlier
我是python的新手,我只想了解逻辑,以便为此创建一个文档。我怎样才能做到这一点。
答案 0 :(得分:2)
看起来需要按位置编制索引,因此请将ix
更改为iloc
。
因此,对于第一行需要更改:
wAvg = sum(df.ix[:,1] * df.ix[:,2])
为:
wAvg = sum(df.iloc[:,1] * df.iloc[:,2])
按boolean indexing
需要loc
进行过滤,并按df.columns[2]
索引选择列名:
df.ix[df.ix[:,2] > outlier, 2] = outlier
df.ix[df.ix[:,2] < -outlier, 2] = -outlier
为:
df.loc[df.iloc[:,2] > outlier, df.columns[2]] = outlier
df.loc[df.iloc[:,2] < -outlier, df.columns[2]] = -outlier
有关详细信息,请查看pandas docs。
编辑:
for k in np.arange(0,3,1):
wAvg = sum(df.iloc[:,1] * df.iloc[:,2]) #Weight Average
Std = df.iloc[:,2].std()
df.iloc[:,2] = (df.iloc[:,2]-wAvg)/Std
df.loc[df.iloc[:,2] > outlier, df.columns[2]] = outlier
df.loc[df.iloc[:,2] < -outlier,df.columns[2]] = -outlier