具有2列例如一个简单的熊猫数据帧id
和value
其中value
要么0
或1
我想随机替换10%
所有的value==1
用0
.
如何用熊猫实现这种行为?
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))