Python 获取熊猫系列中的前K个值包括循环值

Python 获取熊猫系列中的前K个值包括循环值,python,pandas,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的值。但是我怎样才能在熊猫系列中做到呢 def get_top_K_uniques(K, nums): ret = [] presense = defaultdict(bool) counter = 0

我有一个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的值。但是我怎样才能在熊猫系列中做到呢

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
提前感谢。

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

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

输出
使用
类别

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

s[s.astype('category')。类别代码使用
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


s[s.astype('category')).猫。codes@mad_我不需要那个。你可以再看一遍这个问题,看看如何对序列使用apply方法?@mad_uuu否。我需要获取前K个唯一值,但在获取值时包含重复的值。你可以阅读原始python代码来理解/如果你不想使用lambda,只需将序列转换为list并继续对你的功能。它会给你想要的。我看不到issue@mad_我知道,但是熊猫系列更好、更快、更干净。@mad_uu我不需要那个。你可以再看一遍这个问题,你想知道如何对系列使用apply方法吗?@mad_u不。我需要获取前K个唯一值,但在获取值时包含重复值。您可以阅读原始python代码来理解/如果您不想使用lambda,只需将您的系列转换为list并传递给您的函数。它将提供您想要的。我没有看到issue@mad_我知道,但熊猫系列更好、更快、更干净。如果您感兴趣,请添加一个新方法。:-)它给我一个错误,说列表对象没有属性
isin
。我让nums作为pandas系列我做了一个系列的显式构造添加了一个新方法,如果你感兴趣的话。:-)它给我一个错误,说列表对象没有属性
isin
。我让nums作为pandas系列我做了一个系列的显式构造。你能解释一下这是如何工作的吗emental?这太棒了!@Yuca it将所有相同的数字冻结到一个类别,然后我们只需要将类别编号切成小于4的部分,我们得到所有5个不同的类别。你能解释一下这是如何工作的吗,类别自动递增吗?这太棒了!@Yuca it将所有相同的数字冻结到一个类别,然后我们只需要将类别编号切成更小的部分吗比4我们得到所有5个不同的类别
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