我在 Python 中有一个 DataFrame,如下所示。 Text Label0 abc 01 def 12 ghi 13 . .4 . .5 . .有 100 行标签为“1”,只有 50 行标签为“0”。我想要一个平衡的集合,以便有标签为“0”的 50 行和标签为“1”的 50 行。哪些带有标签“1”的行被丢弃并不重要。有没有什么简洁的方法可以用 Python 写这个?
2 回答
Cats萌萌
TA贡献1805条经验 获得超9个赞
使用groupby和head:
df = df.groupby('Label').head(50)
这将从 Label 分别为 0 和 1 的每个行子集中取前 50 个。在标签为 1 的行的情况下,前 50 个被选中,其余的被丢弃。
要选择最后 50 个,请替换head(50)为tail(50)。
要随机选择 50 行,请使用apply+ sample:
df = (df.groupby('Label', as_index=False)
.apply(lambda x: x.sample(n=50))
.reset_index(drop=True))
请注意,如果任何组的项目少于 N (=50) 个,这将不起作用。
添加回答
举报
0/150
提交
取消