对多列取平均值
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')
我正在尝试计算新列的平均值。
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')