.ix альтернатива в коде - PullRequest
0 голосов
/ 06 июня 2018

Я хочу запустить код, чтобы проверить, что происходит внутри, но я не могу выполнить это, есть сообщение о том, что .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, и я просто хочу понять логику, чтобы я мог создать один документ для этого.Как я могу это сделать.

1 Ответ

0 голосов
/ 06 июня 2018

Похоже, нужно индексировать по позициям, поэтому измените 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...