Python 熊猫,蟒蛇。替换列中值的随机子集

Python 熊猫,蟒蛇。替换列中值的随机子集,python,pandas,random,Python,Pandas,Random,我有一个数据框,其中一个特定列(y1)有3个可能的值:-9、1和2 我想改变1000个随机样本的值,原来是2到-9 我试过这个: df.loc[df.y1 == "2", 'y1'].sample(1000) =="-9" 但是它不起作用。因为当你使用“==”作为索引的正确方法时,你只需要在第二个索引中使用“=”来分配-9值,我认为你需要先对值进行更改,然后分配: 如果过滤的a的行数小于1000,则会出现问题,因此添加了min,因此如果长度

我有一个数据框,其中一个特定列(y1)有3个可能的值:-9、1和2

我想改变1000个随机样本的值,原来是2到-9

我试过这个:

df.loc[df.y1 == "2", 'y1'].sample(1000) =="-9"

但是它不起作用。

因为当你使用“==”作为索引的正确方法时,你只需要在第二个索引中使用“=”来分配-9值,我认为你需要先对值进行更改,然后分配:

如果过滤的
a
的行数小于
1000
,则会出现问题,因此添加了
min
,因此如果
长度<1000
,则返回
a
的长度:

a = df.loc[df.y1 == 2, 'y1']
df.loc[a.sample(min(len(a.index), 1000)).index, 'y1'] = -9
感谢您提供更好的解决方案,如果可能,
y1列中没有
2

df.loc[(a if len(a.index) < 1000 else a.sample(1000)).index, 'y1'] = -9
df.loc[(如果len(a.index)<1000,否则a.sample(1000)).index'y1']=-9

如果我理解正确,我会尝试:df.loc[df.y1==“2”,“y1'].sample(1000)=“-9”。但不起作用实际上有两个错误,而且我回答得太快了,我应该先阅读示例函数。如果
a
是一个空数据帧,会出现问题,您是否更喜欢
(a if len(a.index)<1000,否则a.sample(1000)).index