Панд эквивалент Ntile () в R - PullRequest
0 голосов
/ 17 апреля 2019

Я изучаю панды и R одновременно и задаюсь вопросом, есть ли способ делать следующее в пандах?

y = c(3,2,2,NA,30,4)
ntile(y, n=2) # 1  1  1 NA  2  2

Pandas
y = pd.Series((3,2,2,np.nan,30,4))
??

Explanation:
From: (3,2,2,NA,30,4)
To:   1  1  1 np.nan  2  2
Logic: first three number are smaller in rank and assign rank 1
       last two values are larger so have rank 2.

**Required Output**
array([1  1 1 nan  2  2])

1 Ответ

2 голосов
/ 17 апреля 2019

Попробуйте:

pd.qcut(y, q=2)

0    (1.999, 3.0]
1    (1.999, 3.0]
2    (1.999, 3.0]
3             NaN
4     (3.0, 30.0]
5     (3.0, 30.0]
dtype: category
Categories (2, interval[float64]): [(1.999, 3.0] < (3.0, 30.0]]

, если хотите получить числовой ответ:

cuts = 2
pd.qcut(y,q=cuts, labels=range(1, cuts+1))

0    1.0
1    1.0
2    1.0
3    NaN
4    2.0
5    2.0
dtype: category
Categories (2, int64): [1 < 2]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...