熊猫随机替换k%


问题内容

具有2列例如一个简单的熊猫数据帧idvalue其中value要么01我想随机替换10%所有的value==10

如何用熊猫实现这种行为?


问题答案:

pandas 回答

  • 用于仅query过滤df``value == 1
  • 使用sample(frac=.1)采取这些的10%
  • 使用结果的索引分配零

df.loc[
    df.query('value == 1').sample(frac=.1).index,
    'value'
] = 0

替代numpy答案

  • 得到的,其中布尔数组df['value']1
  • 分配10%的零和90%的随机数组

v = df.value.values == 1
df.loc[v, 'value'] = np.random.choice((0, 1), v.sum(), p=(.1, .9))