获取熊猫系列的前K个值,包括重复值

时间:2018-09-04 13:45:37

标签: python pandas

我在python中有一个代码段。它获取前K = 5个值,但如果该值已经出现,则不递增K的值。

例如,给出[1, 3, 3, 5, 5, 6, 1, 4, 8, 9, 34, 66, 124]K = 5时,它应该返回

[1, 3, 3, 5, 5, 6, 1, 4]

如果值重复,则不应增加K的值。这是Python代码。但是我该如何在Pandas Series中做到这一点?

def get_top_K_uniques(K, nums):
    ret = []
    presense = defaultdict(bool)
    counter = 0
    for each in nums:
        if not presense[each]:
            presense[each] = True
            counter+=1
        ret.append(each)
        if counter == K:
            return ret

谢谢。

2 个答案:

答案 0 :(得分:4)

使用Series.unique()Series.isin()

nums = pd.Series([1, 3, 3, 5, 5, 6, 1, 4, 8, 9, 34, 66, 124])
uniq = nums.unique()[:5]
nums[nums.isin(uniq)]

输出

0    1
1    3
2    3
3    5
4    5
5    6
6    1
7    4

答案 1 :(得分:1)

使用category

s[s.astype('category').cat.codes<4]
Out[153]: 
0    1
1    3
2    3
3    5
4    5
6    1
7    4
dtype: int64