我不太了解您的问题或您如何获得“c”列中的值。如果您想要两列的顶部和底部平均值,那将是 4 个单独的值(而您在“c”列中只有 3 个值)。我也不确定顶部/底部是否是指每列中的最高/最低 3 个值(因为你说的是 top 'n' values,我猜不是)。
col 'a' 和 col 'b' 的顶部/底部平均值是这样的:
data = {'a': list(range(1,10)), 'b': [5, 4, 2, 2, 4, 3, 2, 1, 0]}
a b
0 1 5
1 2 4
2 3 2
3 4 2
4 5 4
5 6 3
6 7 2
7 8 1
8 9 0
n = 3
averages = {}
for col in df.columns:
averages[col+'_bottom_avg'] = df[col][:n].mean()
averages[col+'_top_avg'] = df[col][-n:].mean()
Output:
averages
{'a_bottom_avg': 2.0,
'a_top_avg': 8.0,
'b_bottom_avg': 3.6666666666666665,
'b_top_avg': 1.0}
如果您想要前 3 个最大值/最小值的平均值,您可以先对列进行排序:
averages = {}
for col in df.columns:
averages[col+'_bottom_avg'] = df[col].sort_values()[:n].mean()
averages[col+'_top_avg'] = df[col].sort_values()[-n:].mean()
Output:
averages
{'a_bottom_avg': 2.0,
'a_top_avg': 8.0,
'b_bottom_avg': 1.0,
'b_top_avg': 4.333333333333333}
抱歉,如果我完全误解了您的问题。