pandas 计算除最小值和最大值外的所有行的平均值?

lsmepo6l  于 2023-06-28  发布在  其他
关注(0)|答案(2)|浏览(151)

给定以下dataframe:
| col_a| col_B| col_c| col_d|
| - -----|- -----|- -----|- -----|
| - 一百|2| 4|一百|
| 两百|4|八|两百|
我想计算不包括最小值和最大值的各行的平均值:
| col_a| col_B| col_c| col_d|平均值超出最小值最大值|
| - -----|- -----|- -----|- -----|- -----|
| - 一百|2| 4|一百|三个|
| 两百|4|八|两百|六|
我知道我可以通过mean(axis=1)使用mean,但我不知道如何排除min和max值。我处理的数据集非常大,所以理想情况下,我正在寻找一个矢量化的解决方案。
有什么想法吗
创建dataframe的代码:

data = {
    "col_a": [-100, -200],
    "col_b": [2, 4],
    "col_c": [4, 8],
    "col_d": [100, 200],
}
df = pd.DataFrame(data)
3zwjbxry

3zwjbxry1#

我认为这是一个简单的方法:

df['MIN_DELETE']=df.min(axis=1)  #find the MIN 
df['MAX_DELETE']=df.max(axis=1)  #find the MAX 
df['MIN_DELETE'] = -df['MIN_DELETE']  #negative numbers of MIN
df['MAX_DELETE'] = -df['MAX_DELETE']  #negative numbers of MAX
df['mean_exc_min_max']=df.sum(axis = 1)/(len(df.columns)-4)  
#sum of entire row (MAX+MIN+MAX_DELETE+MIN_DELETE=0)
#devided by number of columns without 4 columns
df.drop(['MAX_DELETE', 'MIN_DELETE'], axis=1)  #drop MAX_DELETE and MIN_DELETE

编辑:需要先求MAX和MIN,再做负值

8yoxcaq7

8yoxcaq72#

Python一行程序:

df['mean_exc_min_max'] = (df.sum(1)-df.min(1)-df.max(1))/2

相关问题