Contra111
Contra111

Reputation: 327

Pandas get random values from two columns

Example dataframe:

df = pd.DataFrame({
    'audio': ['audio1', 'audio2', 'audio3'],
    'col1': ['A', 'B', 'C'],
    'col2': ['D', 'E', 'F']
})

I need to get value of column "audio" and value from column col1 or col2 randomly for eaсh row like this:

audio  value (value is random value from col1 or col2)
audio1 A
audio2 E
audio3 C

Upvotes: 0

Views: 1092

Answers (2)

anky
anky

Reputation: 75120

you can also try sample with axis=1:

df.set_index('audio').sample(n=1,axis=1)
#df.set_index('audio').apply(np.random.choice,axis=1) #for random values in each row

Example:

i=1
while i < 6:
    print(df.set_index('audio').sample(n=1,axis=1),'\n')
    i += 1

        col2
audio      
audio1    D
audio2    E
audio3    F 

       col2
audio      
audio1    D
audio2    E
audio3    F 

       col1
audio      
audio1    A
audio2    B
audio3    C 

       col1
audio      
audio1    A
audio2    B
audio3    C 

       col2
audio      
audio1    D
audio2    E
audio3    F 

Upvotes: 2

yatu
yatu

Reputation: 88295

Here's a numpy based approach:

v = df[['col1', 'col2']].values
ix = np.random.randint(0,v.shape[1],df.shape[0])
df['value'] = np.take_along_axis(v, ix[:,None], 1)

print(df)

    audio  col1 col2 value
0  audio1    A    D     D
1  audio2    B    E     E
2  audio3    C    F     C

Upvotes: 3

Related Questions