python - 如何根据列条目从 Pandas 数据框中删除随机行?

标签 python pandas dataframe random

我有一个约 3700 行的数据集,需要根据列删除其中的 1628 行。数据集如下所示:

compliance  day0  day1  day2  day3  day4
True        1     3     9     8     8
False       7     4     8     3     2
True        4     5     0     3     5
True        5     3     9     6     2

对于 1068 行,如果 compliance=true,我想删除整行。

问题是,我想随机执行此操作;我不想删除前 1063 行。我试过这个:

for z in range(1629):
    rand = random.randint(0,(3783-z)) #subtract z since dataframe shape is shrinking
    if str(data.iloc[rand,1]) == 'True':
        data = data.drop(balanced_dataset.index[rand])

但在删除几行后我收到以下错误:

 'labels [2359] not contained in axis'

我也试过这个:

data.drop(data("adherence.str.startswith('T').values").sample(frac=.4).index)

frac 现在是任意选择的,我只是想让它工作。我收到以下错误:

'DataFrame' object is not callable

任何帮助将不胜感激!谢谢

最佳答案

使用 sampledrop:

n = 1068
# Do this first if you haven't already.
# df.compliance = df.compliance.map(pd.eval)
df_dropped = df.drop(df[df.compliance].sample(n=n).index)

为此,n 需要严格小于过滤后的 DataFrame。


示例随机删除两行。

df.drop(df[df.compliance].sample(n=2).index)

   compliance  day0  day1  day2  day3  day4
1       False     7     4     8     3     2
3        True     5     3     9     6     2

关于python - 如何根据列条目从 Pandas 数据框中删除随机行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54955030/

相关文章:

python - 基于索引的跨 2 个数据帧的函数 (python)

python - 通过 python 将工作表添加到 ods 文件

python - 如何使用 python(pandas) 更新 csv 文件中所有行的最后一列值

Python:重新查找最长序列

python - 如何在 Pandas DataFrame 索引中获取每个月的最后一天(使用 TimeGrouper)

python - RE Pandas 重采样

Python/Pandas - 合并基于非索引列的两个数据框

r - 类 "By"到 R 中的数据帧

javascript - 是否可以在 python 中将包含 JavaScript 图表的 html 文件转换为 PDF?

python - opencv 中的 SIFT() 不工作 : 'module' object has no attribute 'SURF'