Reputation: 327
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
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
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