Расчет абсолютного среднего в фрейме данных - PullRequest
0 голосов
/ 29 мая 2020

My dataframe-

df= pd.DataFrame({'A':[33,-44],'B':[44,-66],'C':[66,21]})

Я хочу найти абсолютное среднее значение для каждой строки (игнорируя знаки), и формула для взятия среднего будет, например, -

для первого row-

(33+ 44/2 + 66/3)/3 = 25.6

для второй строки-

(44+66/2+21/3)/3=24.3

Это не прямое среднее, но в соответствии с заданным столбцом c значение будет разделено на заданное c значение, как для столбца A, его 1 для столбца B, его деление на 2 и т. д.

output-

        Average
     0  25.60000
     1  24.300

Я сделал -

df[['average']]= (abs(df[['A']]).values + abs(df[['B']]/2).values +  abs(df[['C']]/3).values )/3 

но это дает ошибка

Ответы [ 3 ]

1 голос
/ 29 мая 2020

В вашем коде есть ошибка, потому что: они ошибаются, что: ['average'] is in the index , ofcouse ['A'], ['B'] ,.... тоже.

Вы должны попробовать это:

df['average']= (abs(df['A']).values + abs(df['B']/2).values +  abs(df['C']/3).values )/3
0 голосов
/ 29 мая 2020

попробуйте:

df["average"] = (df.abs()/np.arange(1,4)).mean(axis=1)

если столбцов больше, то:

df["average"] = (df[['A','B','C']].abs()/np.arange(1,4)).mean(axis=1)
0 голосов
/ 29 мая 2020

Разве это не возможно с pd.Series?

((abs(df['A'])+abs(df['B']/2)+abs(df['C']/3))/3).to_frame()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...