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

时间:2017-08-07 08:24:20

标签: python pandas random

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

我想更改1000个值的随机样本,最初为2到-9。

我试过这个:

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

但它不起作用。

2 个答案:

答案 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值