首页 > 解决方案 > Pandas 从两列中获取随机值

问题描述

示例数据框:

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

我需要为每一行随机获取“audio”列的值和 col1 或 col2 列的值,如下所示:

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

标签: pythonpandasdataframe

解决方案


这是一个numpy基于的方法:

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

推荐阅读