为了账号安全,请及时绑定邮箱和手机立即绑定

使 DataFrame 相对于特定列平衡

使 DataFrame 相对于特定列平衡

神不在的星期二 2021-07-09 18:01:23
我在 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) 个,这将不起作用。


查看完整回答
反对 回复 2021-07-27
  • 2 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信