对多列取平均值

taking mean over multiple columns

我正在尝试计算新列的平均值。

data['english_combined'] = data['english'] + data['intake_english'] + data['language test scores formatted']

所以 english_combined 列是其他列的总和。我想根据输入的成绩取平均值,例如,如果只有 'English' 和 'inktake_english' 有一个成绩,我想取这 2 个的平均值。如果所有 3 个测试都参加,我想参加3 次测试的平均值

我确实尝试过类似的方法,但没有成功

[np.mean(i,j,k) for i,j,k in zip(data['english'], data['intake_english'], data['language test scores formatted'])]

有什么可行的建议吗?

df.mean(axis='columns') 为所欲为。默认情况下,它会忽略 NaN(也就是说,在计算平均值时不会将它们计入总数)。

一个简单的例子:

>>> df = pd.DataFrame({'a': [7, 8.5, pd.NA, 6], 
                       'b': [5, 6, 6, 7], 
                       'c': [7, pd.NA, pd.NA, 5]})
>>> df
      a  b     c
0     7  5     7
1   8.5  6  <NA>
2  <NA>  6  <NA>
3     6  7     5
>>> df.mean(axis='columns')
0    6.333333
1    7.250000
2    6.000000
3    6.000000
dtype: float64

请注意第 2 行的平均值是 6,而不是 2。与第 1 行类似。

对于你的情况,它类似于

data['english_combined'] = data[
            ['english', 'intake_english', 
             'language test scores formatted']].mean(axis='columns')