熊猫随机替换k%
问题内容:
具有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))