Let it be the following Dataframe of pandas in Python.
Column_1 | Column_2 | Number |
---|---|---|
UDKA | 1234 | 5 |
MAKU | 1544 | 5 |
POKA | 5434 | 2 |
UJFK | 9104 | 3 |
I want to generate a random number column that generates for each row a random number between 1 and its value in the Number column df['Random'] = rand(1, x.Number)
. Example result:
Column_1 | Column_2 | Number | Random |
---|---|---|---|
UDKA | 1234 | 5 | 4 |
MAKU | 1544 | 5 | 2 |
POKA | 5434 | 2 | 1 |
UJFK | 9104 | 3 | 2 |
Obviously Random cannot be strictly greater than Number.
CodePudding user response:
You can generate a random [0,1) float, then multiply by the upper bound and add 1:
import numpy as np
df['random'] = (df['Number'].mul(np.random.random(size=len(df))).astype(int)
.add(1)
)
print(df)
output:
Column_1 Column_2 Number random
0 UDKA 1234 5 3
1 MAKU 1544 5 1
2 POKA 5434 2 2
3 UJFK 9104 3 1
edit: clip
is actually not needed as random
generates a [0,1) number.