根据其他列的条件在新列中执行功能

时间:2019-09-10 21:36:50

标签: python-3.x pandas numpy

在这里,我尝试查询数据框df中具有布尔值“是”或“否”的列,以便根据满足条件的行中的概率分布执行随机字母分配的某些功能。

if (df['some_bool'] == 'Yes'):
    df['score'] = np.random.choice(['A', 'B', 'C'], len(df), p=[0.3, 0.2, 0.5])

写此代码的正确方法是什么,因为我收到上述错误:

ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

df['score'] = np.where(df['some_bool'] == 'Yes', 
                       np.random.choice(['A', 'B', 'C'], len(df), p=[0.3, 0.2, 0.5]), '')