大熊猫随机取代k%

Geo*_*ler 6 python numpy pandas

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

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

piR*_*red 9

pandas 回答

  • 用于仅query过滤dfvalue == 1
  • 使用sample(frac=.1)采取这些的10%
  • 使用结果的索引来指定零

df.loc[
    df.query('value == 1').sample(frac=.1).index,
    'value'
] = 0
Run Code Online (Sandbox Code Playgroud)

另类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))
Run Code Online (Sandbox Code Playgroud)