как изменить значение индекса массива numpy со значениями столбцов pandas датафрейм - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть dataframe: data:

  user_id   item_id rating
0    772       36    3
1    471      228    5
2    641      401    4
3    312       98    4
4     58      504    5

Я создал массив случайных чисел, размер которого равен уникальным значениям в item_id

a = np.random.random(1662)

Теперь я хочу преобразовать индексное значение массива как значение столбца item_id. Как изменить индекс массива. Item_id имеет общее значение 1662, но не продолжается, как 1 до 1662. Некоторые значения отсутствуют. максимальное значение 1681. Поэтому мне нужно создать случайный массив размером 1662 (т.е. равный уникальным значениям item_id). Но если я хочу увидеть случайное значение, связанное с индексом (1677), как я могу это увидеть?

Так как размер массива равен 1662, значит, максимальное значение индекса составляет 1661 для индекса. поэтому я хочу связать число 1662 со значениями item_id

1 Ответ

0 голосов
/ 09 февраля 2020

Ваш вопрос кажется расплывчатым.

У вас есть случайный массив с 1662 уникальными значениями в item_id - это означает, что его возможное значение существует в item_id, а также возможно, что его нет. Если это так, вы хотите переиндексировать массив numpy a в соответствии со значением - поэтому, если число 36 находится в «a» и в «item_id», вы хотите [36] = 36?

Пожалуйста, уточните.

Если это то, что вы хотите, то просто создайте упорядоченный список для каждого item_id, например, так:

a = np.arrange(max(data.item_id))
b = np.isin(a, data.item_id)
a[b] = np.full(a[b], data.item_id)

ОБНОВЛЕНИЕ: Для [36] = random- число

a[b] = np.full(a[b], np.random.normal())

Предложение : Вы также можете добавить случайные числа в свой фрейм данных как:

data['random'] = np.random.random(data.count())
# create a dict for indexing
random_dict = dict(zip(data['item_id'].tolist(), data['random'].tolist()))
# or set item_id as index:
data.index = data['item_id'].values

Дайте мне знать, если это поможет!

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