从熊猫数据框中“丢弃随机行”

时间:2018-06-19 17:39:12

标签: python pandas dataframe

在熊猫数据框中,如何删除服从条件的行的随机子集

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

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

我很想知道这样做的最简单,最pythonic / panda方式!


编辑:This question提供了部分答案,但仅涉及按索引删除行,而忽略行值。我仍然想知道如何仅从标记有特定方式的行中删除。

2 个答案:

答案 0 :(得分:7)

使用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

答案 1 :(得分:3)

drop sample

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