如何更改 Pandas 数据框中子集的随机样本列值?

3

Have a pandas dataframe of the form

col1 col2 col3     tochange
a1   a2   group1   a4
b1   b2   group1   b4
...
i1   i2   group2   i4
...

其中col3表示每行的二进制类别标签(即,一行可以属于group1或group2)。

想要将tochange值设置为某个常量,用于随机抽取数据框中属于group2的子集。即,在数据框的子集df[df['col3'] == 'group2']中,将X个随机行的tochange值全部更改为某个常量值,比如"changed"。

目前正在研究sample(X),但不太确定如何获得返回样本的索引,以将其映射回原始数据框以更改该行的列。欢迎提供额外的建议或建议,以实现最终尝试在此处完成的内容。

1个回答

3
在查询group2之后使用shuffle,假设你想要随机抽取n个样本。
n=10      
x=df[df['col3'] == 'group2'].index.values    
numpy.random.shuffle(x)    
df.loc[x[:n],'tochange']='something'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接