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

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

给定以下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的代码:

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

3zwjbxry1#

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

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

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

8yoxcaq7

8yoxcaq72#

Python一行程序:

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

相关问题