Как получить индекс строк с более частыми значениями в пандах - PullRequest
0 голосов
/ 08 января 2019

как я могу получить индекс строк, которые имеют меньшее количество значений. Например:

test = pd.DataFrame({'price' : [1, 2, 1, 3, 5, 2, 2]})
out[1]:
    price
0   1
1   2
2   1
3   3
4   5
5   2
6   2

Как я могу получить индекс цены = 1, 3, 5, который встречается только менее 3 раз в столбце?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Вы можете считать предметы с помощью value_counts и выбирать те, которые являются «достаточно редкими»:

THRESHOLD = 3
is_rare = test['price'].value_counts() < THRESHOLD
rare = is_rare[is_rare].index
#Int64Index([1, 5, 3], dtype='int64')

Далее найдите строки, содержащие редкие предметы:

are_rare_rows = test["price"].isin(rare)
are_rare_rows[are_rare_rows].index
#Int64Index([0, 2, 3, 4], dtype='int64')
0 голосов
/ 08 января 2019

Использование duplicated

test[~test.price.duplicated(keep=False)]
   price
3      3
4      5

test.index[~test.price.duplicated(keep=False)]
Int64Index([3, 4], dtype='int64')

Обновите тогда вам нужно transform

test[test.groupby('price').price.transform('count')<=1]
   price
3      3
4      5

test[test.groupby('price').price.transform('count')<3].index
Int64Index([0, 2, 3, 4], dtype='int64')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...