如何删除共享某个列值的 50% 的行
How to delete 50% of rows that share a certain column value
df.groupby(['target']).count()
Target
data
Negative
103210
Positive
211082
现在,我的正面数据太大了。我想删除 Target
列中值为 Positive
的行的 50%。我该怎么做?
要保留 Positive
行的一半,sample
50% of the Positive
rows using frac=0.5
and drop
这些索引:
indexes = df[df.target == 'Positive'].sample(frac=0.5).index
df = df.drop(indexes)
要准确保留 100K Positive
行,sample
100K Positive
rows using n=100_000
and concat
它们与 Negative
行:
df = pd.concat([
df[df.target == 'Negative'],
df[df.target == 'Positive'].sample(n=100_000)
])
df.groupby(['target']).count()
Target | data |
---|---|
Negative | 103210 |
Positive | 211082 |
现在,我的正面数据太大了。我想删除 Target
列中值为 Positive
的行的 50%。我该怎么做?
要保留 Positive
行的一半,sample
50% of the Positive
rows using frac=0.5
and drop
这些索引:
indexes = df[df.target == 'Positive'].sample(frac=0.5).index
df = df.drop(indexes)
要准确保留 100K Positive
行,sample
100K Positive
rows using n=100_000
and concat
它们与 Negative
行:
df = pd.concat([
df[df.target == 'Negative'],
df[df.target == 'Positive'].sample(n=100_000)
])