У меня есть DataFrame со следующей структурой.
df = pd.DataFrame({'tenant_id': [1,1,1,2,2,2,3,3,7,7], 'user_id': ['ab1', 'avc1', 'bc2', 'iuyt', 'fvg', 'fbh', 'bcv', 'bcb', 'yth', 'ytn'],
'text':['apple', 'ball', 'card', 'toy', 'sleep', 'happy', 'sad', 'be', 'u', 'pop']})
Это дает следующий вывод:
df = df[['tenant_id', 'user_id', 'text']]
tenant_id user_id text
1 ab1 apple
1 avc1 ball
1 bc2 card
2 iuyt toy
2 fvg sleep
2 fbh happy
3 bcv sad
3 bcb be
7 yth u
7 ytn pop
Я бы хотел сгруппировать по tenant_id и создать новый столбец, который является случайным выбором строк из столбца user_id.
Таким образом, я хотел бы, чтобы мой вывод выглядел следующим образом:
tenant_id user_id text new_column
1 ab1 apple [ab1, bc2]
1 avc1 ball [ab1]
1 bc2 card [avc1]
2 iuyt toy [fvg, fbh]
2 fvg sleep [fbh]
2 fbh happy [fvg]
3 bcv sad [bcb]
3 bcb be [bcv]
7 yth u [pop]
7 ytn pop [u]
Здесь были выбраны случайные идентификаторы из столбца user_id, эти идентификаторы могут повторяться, так как "fvg"повторяется для tenant_id = 2.Я хотел бы иметь порог не более десяти идентификаторов.Эти данные являются всего лишь примером и имеют только 10 идентификаторов, поэтому обычно любое число намного меньше общего числа user_id.В этом случае говорят, что на 1 меньше, чем user_id, которые принадлежат арендатору.
Сначала я попытался выяснить, как выбрать случайное подмножество переменной длины с помощью df.sample
new_column = df.user_id.sample(n=np.random.randint(1, 10)))
После этого я немного растерялся, присваивая его своим результатам df в Nan, вероятно, потому чтоони имеют переменную длину.Пожалуйста помоги.Благодарю.