如何在pandas DataFrame或Series中选择一定数量的数据?

时间:2018-03-02 21:46:06

标签: python pandas

我有一个带有所有数值的pandas DataFrame或Series。我想在DataFrame或Series的某个列中选择前99%的值,从而删除底部1%的最小值。我应该如何在Python 3中实现这一点?谢谢!

1 个答案:

答案 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