我有一个数据框,特定列(y1)有3个可能的值:-9,1和2.
我想更改1000个值的随机样本,最初为2到-9。
我试过这个:
df.loc[df.y1 == "2", 'y1'].sample(1000) =="-9"
但它不起作用。
答案 0 :(得分:2)
我认为首先需要index
个值进行更改然后分配:
如果过滤的a
行数少于1000
,则会出现问题,因此添加了min
- 因此如果a
则返回length < 1000
的长度}:
a = df.loc[df.y1 == 2, 'y1']
df.loc[a.sample(min(len(a.index), 1000)).index, 'y1'] = -9
感谢您John Galt提供更好的解决方案,如果可能,2
列中没有y1
:
df.loc[(a if len(a.index) < 1000 else a.sample(1000)).index, 'y1'] = -9
答案 1 :(得分:0)
因为你在使用&#34; ==&#34;索引的正确方法,你只需要使用&#34; =&#34;为第二个分配-9值