我有一个带有所有数值的pandas DataFrame或Series。我想在DataFrame或Series的某个列中选择前99%的值,从而删除底部1%的最小值。我应该如何在Python 3中实现这一点?谢谢!
答案 0 :(得分:1)
您可以使用np.percentile
,但要小心。百分位数的定义不止一个,所以首先要确保这符合您的需求。
以下示例过滤掉系列中最小的20%值。
import pandas as pd, numpy as np
s = pd.Series(np.random.rand(10))
# 0 0.477326
# 1 0.474181
# 2 0.438678
# 3 0.397124
# 4 0.777874
# 5 0.698927
# 6 0.244970
# 7 0.540653
# 8 0.658190
# 9 0.774246
# dtype: float64
t = s[s > np.percentile(s, 20)]
# 0 0.477326
# 1 0.474181
# 2 0.438678
# 4 0.777874
# 5 0.698927
# 7 0.540653
# 8 0.658190
# 9 0.774246
# dtype: float64