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

Например, у меня есть строка тысяч, один из которых - это столбец cow_ID, где у каждого идентификатора коровы есть несколько строк. Я хочу заменить эти идентификаторы номерами, начинающимися с 1, чтобы их было легче запомнить.

df['cow_id'].unique().tolist()

в результате:

 5603,
 5606,
 5619,
 4330,
 5587,
 4967,
 5554,
 4879,
 4151,
 5501,
 4723,
 4908,
 3963,
 4023,
 4573,
 3986,
 5668,
 4882,
 5645,
 5548

Как мне изменить каждый уникальный идентификатор на новый номер, такой как:

5603 -> 1
5606 -> 2

Ответы [ 3 ]

3 голосов
/ 10 июля 2019

Попробуйте посмотреть на

df.groupby('cow_id').ngroup()+1

Или попробуйте pd.factorize:

pd.factorize(df['cow_id'])[0]+1

Как и в документации, pd.factorize Кодирует объект как перечислимый тип или категориальную переменную.

Обратите внимание, что есть две возвращаемые переменные pd.factorize

1 голос
/ 10 июля 2019

Вот результат использования pandas.Categorical.Преимущество заключается в том, что вы сохраняете исходные данные и можете переворачивать их туда и обратно. Здесь я создаю переменную с именем "c", которая содержит как исходные категории, так и новые коды

enter image description here

1 голос
/ 10 июля 2019

То, что вы ищете, должно быть помечено категориальной кодировкой. В библиотеке sklearn в python есть много методов предварительной обработки, из которых кодировщик меток должен выполнить эту работу за вас. Перейдите по этой ссылке. https://scikit -learn.org / стабильный / модули / генерироваться / sklearn.preprocessing.LabelEncoder.html # sklearn.preprocessing.LabelEncoder

Также имейте в виду, что использование таких кодировок может привести к некоторому смещению в вашем наборе данных, поскольку некоторые алгоритмы могут считать одну метку выше другой, т. Е. 1> 2> ...> 54. Обратитесь к этому блогу, чтобы узнать больше о кодировках и когда https://towardsdatascience.com/encoding-categorical-features-21a2651a065c

Дайте мне знать, если у вас есть какие-либо вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...