Python 删除最小值、最大值并计算平均值
我有一列数字,我只需要删除一个最小值和一个最大值,然后计算剩余数字的平均值。 问题在于,最小/最大值可能位于列中的任何位置,某些行可能为空(null)或为零,或者列可能只有3个值。 所有数字都将介于0和100之间。 例如:Python 删除最小值、最大值并计算平均值,python,pandas,Python,Pandas,我有一列数字,我只需要删除一个最小值和一个最大值,然后计算剩余数字的平均值。 问题在于,最小/最大值可能位于列中的任何位置,某些行可能为空(null)或为零,或者列可能只有3个值。 所有数字都将介于0和100之间。 例如: Value Property 80 H 30.5 D 40 A 30.5 A 72 H 56 D 64.2 H 如果存在多个最小值或最大值,则只能删除一个
Value Property
80 H
30.5 D
40 A
30.5 A
72 H
56 D
64.2 H
如果存在多个最小值或最大值,则只能删除一个
为了计算列的最小值和最大值,我做了如下操作:
maximum = df['Value'].max()
minimum = df['Value'].min()
在计算这个平均值的条件中,我还包括了它不为空和不等于零的条件。
但是,我不知道如何仅删除一个最大值和一个最小值,并添加超过3行/值的信息
我希望您能在这方面提供一些帮助/提示。让我们做
idxmin
和idxmax
out = df.drop([df.Value.idxmax(),df.Value.idxmin()])
Out[27]:
Value Property
2 40.0 A
3 30.5 A
4 72.0 H
5 56.0 D
6 64.2 H
如果目标是在没有一个最小值和一个最大值的情况下计算平均值,那么您可以这样做
(df['Value'].sum() - df['Value'].min() - df['Value'].max())/(len(df)-2)
为您的数据输出52.54
。请注意,这将忽略NAN等。这不会修改您的df,如果我正确阅读问题,它无论如何都不是目标