Добавьте новый столбец pandas DataFrame, значения которого являются массивом случайных чисел с длиной, полученной из другого столбца. - PullRequest
1 голос
/ 17 апреля 2020

У меня есть следующий DataFrame фиктивных данных

data = { 'user_id': np.random.randint(1000000, 10000000, size=(10)), 'week': np.random.randint(1, 10, size=(10)) }
df = pd.DataFrame(data = data)

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

df.loc[:,'inputs'] = np.random.randint(0, 28, size=(10))

(дает одно целое число на ячейку DataFrame, а не их массив)

df.loc[:,'inputs'] = np.random.randint(0, 28, size=(df['week']))

ValueError: длина значений не соответствует длине индекса

df.loc[:,'inputs'] = np.random.randint(0, 28, size=(10, df['week']))

ValueError: Значение истинности Серии неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

Очевидно, что все это неправильно, но я не могу понять, как создайте новый столбец, записи которого являются каждым массивом, где длина этих массивов зависит от значения другого столбца в той же строке.

1 Ответ

1 голос
/ 17 апреля 2020

Использовать списки для массивов по week числам:

df['inputs'] = [np.random.randint(0, 28, size=x) for x in df['week']]
print (df)
   user_id  week                             inputs
0  9168288     4                     [15, 5, 10, 9]
1  2765768     7          [21, 26, 6, 6, 22, 21, 4]
2  2948278     6               [6, 14, 4, 2, 3, 20]
3  9302275     1                               [23]
4  5737115     5                 [1, 20, 9, 19, 18]
5  5214343     9  [16, 25, 1, 10, 2, 23, 1, 16, 18]
6  9332184     7          [8, 27, 14, 8, 14, 11, 5]
7  1569483     5                 [6, 19, 3, 10, 16]
8  2931319     2                            [0, 15]
9  2126334     2                           [20, 22]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...