Search code examples
pythonselectrandom

select random user or none from the data frame?


Say that I have a dataframe that looks like this:

df=pd.DataFrame({'user': [1, 2, 3, 4, 5, 6],
                'value': [0.64, 0.93, 0, 0.43, 0.65, 0]})
df

I used sample() to select one row (user) randomly

df1 =df.sample()
df1

How could I randomly select one user or no user? I mean the expected output could be one user (e.g. 1,2,3,4,5,6) then (print user id) or no user id is returned (print no user is selected)?

for example: if user 1 is selected randomly

print(user 1 is selected)

if no user is selected

print(no user is selected)

Solution

  • As per @Sid's answer, add a row with None and perform the sampling:

    import pandas as pd
    
    df=pd.DataFrame({'user': [1, 2, 3, 4, 5, 6],
                    'value': [0.64, 0.93, 0, 0.43, 0.65, 0]})
    df = pd.\
        concat([
            df,
            pd.DataFrame({'user': [None], 'value': [None]})
        ])
    
    sample = df.sample(1)["user"].iloc[0]
    if sample is None:
        print("no user is selected")
    else:
        print(f"user {sample} is selected")