Получить верхние значения K в серии панд, включая повторяющиеся значения - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть фрагмент кода в 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. Но как я могу сделать это в серии Панд?

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 голосов
/ 04 сентября 2018

Использование 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
0 голосов
/ 04 сентября 2018

Использование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...