Pandas:随机删除行而不会改组数据集

Bla*_*ack 12 python pandas

我有一个数据集,需要省略几行,同时保留行的顺序.我的想法是使用一个掩码,在0我和我的数据集的长度之间有一个随机数,但是我不知道如何在不改变行周围的情况下设置掩码,即类似于采样数据集的方法.

示例:数据集有5行2列,我想随机删除一行.

Col1 | Col2
  A  |  1
  B  |  2 
  C  |  5     
  D  |  4
  E  |  0
Run Code Online (Sandbox Code Playgroud)

转换为:

Col1 | Col2
  A  |  1
  B  |  2   
  D  |  4
  E  |  0
Run Code Online (Sandbox Code Playgroud)

Col1='C'随机选择省略第三行().

我该怎么办呢?

cel*_*cel 18

以下内容适合您.在这里,我remove_ndf索引中对随机row_ids进行采样.之后,df.drop从数据框中删除这些行并返回旧数据框的新子集.

import pandas as pd
import numpy as np
np.random.seed(10)

remove_n = 1
df = pd.DataFrame({"a":[1,2,3,4], "b":[5,6,7,8]})
drop_indices = np.random.choice(df.index, remove_n, replace=False)
df_subset = df.drop(drop_indices)
Run Code Online (Sandbox Code Playgroud)

DataFrame df:

    a   b
0   1   5
1   2   6
2   3   7
3   4   8
Run Code Online (Sandbox Code Playgroud)

DataFrame df_subset:

    a   b
0   1   5
1   2   6
3   4   8
Run Code Online (Sandbox Code Playgroud)

  • @mnky9800n randint 确实 replacement=True,所以这不起作用 (2认同)