Панды: вернуть уникальные значения в столбец по порядку - PullRequest
0 голосов
/ 01 ноября 2019

Я не уверен, как мне поступить в этом случае.

Рассмотрим df, как показано ниже, и когда я сделаю df.A.unique() ->, дайте мне массив, подобный этому [1, 2, 3, 4]

Но я также хочу индекс этих значений, например numpy.unique()

df = pd.DataFrame({'A': [1,1,1,2,2,2,3,3,4], 'B':[9,8,7,6,5,4,3,2,1]})
df.A.unique()
>>> array([1, 2, 3, 4])

И

np.unique([1,1,1,2,2,2,3,3,4], return_inverse=True)
>>> (array([1, 2, 3, 4]), array([0, 0, 0, 1, 1, 1, 2, 2, 3]))

Как я могу сделать это в Пандах? Уникальные значения с индексом.

Ответы [ 2 ]

2 голосов
/ 01 ноября 2019

Вы также можете использовать DICT .map() с индексом .unique():

df.A.map({i:e for e,i in enumerate(df.A.unique())})

0    0
1    0
2    0
3    1
4    1
5    1
6    2
7    2
8    3
2 голосов
/ 01 ноября 2019

В pandas у нас есть drop_duplicates

df.A.drop_duplicates()
Out[22]: 
0    1
3    2
6    3
8    4
Name: A, dtype: int64

Для соответствия np.unique вывод factorize

pd.factorize(df.A)
Out[21]: (array([0, 0, 0, 1, 1, 1, 2, 2, 3]), Int64Index([1, 2, 3, 4], dtype='int64'))
...