You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas删除label列不含'p'/'u'的20%指定比例行

实现方法

你需要的效果是仅删除label列既不包含p也不包含u的行中的20%,剩余80%的该类行和所有含p/u的行正常保留。可以先把数据集拆分为「固定保留行」和「待抽样处理行」两部分分别处理,再合并即可:

import pandas as pd

df = pd.DataFrame({"text": ["a", "b", "c", "d", "e", "f", "g", "h"],
                   "label": ["o-o-o", "o-o", "o-u", "o", "o-o-p-o", "o-o-o-o-o-o", "p-o-o", "o-o"]
})

# 1. 筛选固定保留的行:label包含p或u的行
keep_df = df[df['label'].str.contains('p|u', regex=True)]
# 2. 筛选待处理的行:label既不包含p也不包含u的行
sample_df = df[~df['label'].str.contains('p|u', regex=True)]

# 3. 待处理行中保留80%(对应删除20%的需求),random_state用于固定抽样结果,不需要可删除
reserve_sample = sample_df.sample(frac=0.8, random_state=42)

# 4. 合并两部分数据,按原索引排序恢复原有行顺序
final_df = pd.concat([keep_df, reserve_sample]).sort_index()
print(final_df)

参数说明

  • frac=0.8 对应待处理行保留80%,如果要调整删除比例修改该数值即可:比如要删除30%的待处理行,就设置为frac=0.7
  • 如果不需要固定每次的抽样结果,直接删除random_state=42参数即可
  • 末尾的sort_index()用来保持行的原有顺序,不需要保留原顺序可以直接删除

内容的提问来源于stack exchange,提问作者taga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:24:05