我有一列数字,我只需要删除一分钟。和最多一个然后计算剩余数字的平均值。 问题是最小值/最大值可能位于列中的任何位置,并且某些行可能为空(空)或为零,或者该列可能只有 3 个值。 所有数字都在 0 到 100 之间。 例如:
Value Property
80 H
30.5 D
40 A
30.5 A
72 H
56 D
64.2 H
如果有超过 1 个 min 或 max,则只能删除 1 个。
为了计算一列的最小值和最大值,我做了如下操作:
maximum = df['Value'].max()
minimum = df['Value'].min()
在计算这个平均值的条件中,我还包括了它不为空和不等于零的条件。 但是,我不知道如何只删除一个最大值和一个最小值,并添加大于 3 行/值的信息。
我希望你能提供一些帮助/提示。
答案 0 :(得分:1)
让我们做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
答案 1 :(得分:1)
如果目标是计算没有一个最小值和一个最大值的平均值,你可以这样做
(df['Value'].sum() - df['Value'].min() - df['Value'].max())/(len(df)-2)
为您的数据输出 52.54
。请注意,这将忽略 NaN 等。这不会修改您的 df,如果我读对了问题,那无论如何都不是目标