我在 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
提交
取消