Python 获取熊猫系列中的前K个值包括循环值
我有一个python代码片段。它获取K=5的最大值,但如果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
[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