如何删除共享特定列值的 50% 的行

Yum*_* Xu 1 python dataframe pandas drop

df.groupby(['target']).count()
Run Code Online (Sandbox Code Playgroud)
目标 数据
消极的 103210
积极的 211082

现在,我的正面数据太大了。我想删除该Target列中值为 的 50% 的行Positive。我该怎么做?

tdy*_*tdy 5

要保留一半的Positive行,sample50% 的Positive行使用frac=0.5这些drop索引:

indexes = df[df.target == 'Positive'].sample(frac=0.5).index
df = df.drop(indexes)
Run Code Online (Sandbox Code Playgroud)

要准确保留 100KPositive行,请使用sample100KPositive行并将它们n=100_000与行一起使用:concatNegative

df = pd.concat([
    df[df.target == 'Negative'],
    df[df.target == 'Positive'].sample(n=100_000)
])
Run Code Online (Sandbox Code Playgroud)