簡體   English   中英

具有列熊貓的最小唯一值的行的隨機值

[英]Random values of rows with minimum unique values of a column pandas

我有一個帶有一堆列的巨大 df(約 100 萬行)。 此列之一包含一些分類數據,例如Name

Code    Regione    CodeProv            Origin  Name
0            1     Piemonte            1       Torino
1            1     Piemonte            2       Vercelli
2            1     Piemonte            2       Vercelli

我想要做的是獲得隨機數量的行,比如 10k,但這些行應該包含至少 20 個Name列的唯一值,無論每個唯一類別是否具有相同的行號。

如果您的名稱數量是 >> 20 並且您的名稱分布不集中在少於 20 個名稱中,那么不要將其復雜化,只需執行以下操作:

number_of_unique_names_in_sample = 0
while number_of_unique_names_in_sample < 20:
    df_sample = df.sample(n=10_000)
    number_of_unique_names_in_sample = df_sample["Name"].nunique()

並且可能添加一個計數器來限制迭代次數,以防您的分布發生變化(例如在小型測試樣本中)。

這可能是你的要求

name_cols = [list_of_names]
samples_per_name = 500

df[df['Name'].isin(name_cols)].groupby('Name').apply(lambda x: x.sample(samples_per_name))

結果將是 10000 行,其中len(name_cols) (在您的示例中為 20),每行包含 500 行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM