Вычислить среднее значение столбца для каждой строки, исключая строку, для которой рассчитывается среднее значение - PullRequest
0 голосов
/ 30 октября 2018

Мне нужно вычислить среднее значение определенного столбца в DataFrame, чтобы рассчитывать средние значения для каждой строки, исключая значение строки, для которой она рассчитана.

Я знаю, что могу итерировать каждую строку по индексу, отбрасывая каждую строку по индексу в каждой итерации, а затем вычисляя среднее значение. Интересно, есть ли более эффективный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

То есть mean равно sum/size, так что вы можете вычесть sum всех значений по столбцу и разделить на длину DataFrame без 1:

df = pd.DataFrame({'a':[1,2,3,4]})

#slow, working only with unique values
df['b'] = df['a'].apply(lambda x: df.loc[df.a != x, 'a'].mean())
#faster
df['b1'] = (df['a'].sum() - df['a']) / (len(df) - 1)
print (df)
   a         b        b1
0  1  3.000000  3.000000
1  2  2.666667  2.666667
2  3  2.333333  2.333333
3  4  2.000000  2.000000
0 голосов
/ 30 октября 2018

вы можете dataframe["ColumnName"].mean() для одного столбца или dataframe.describe() для всех столбцов

...