从熊猫数据帧"Drop random rows"



在熊猫数据帧中,如何删除符合条件的随机行子集

换句话说,如果我有一个带有Label列的 Pandas 数据帧,我想删除 50%(或其他百分比(的行,其中Label == 1,但保留其余所有:

Label A     ->    Label A
0     1           0     1
0     2           0     2
0     3           0     3
1     10          1     11
1     11          1     12
1     12
1     13

我很想知道最简单,最像python/panda的方法!


编辑:这个问题提供了部分答案,但它只讨论了按索引删除行,忽略了行值。我仍然想知道如何仅从以某种方式标记的行中删除。

使用frac参数

df.sample(frac=.5)

如果定义要在变量中放置的金额n

n = .5
df.sample(frac=1 - n)

若要包含条件,请使用drop

df.drop(df.query('Label == 1').sample(frac=.5).index)
Label   A
0      0   1
1      0   2
2      0   3
4      1  11
6      1  13

dropsample一起使用

df.drop(df[df.Label.eq(1)].sample(2).index)
Label   A
0      0   1
1      0   2
2      0   3
3      1  10
5      1  12

最新更新