使用Pandas使用特定列的权重对DataFrame进行采样

Inf*_*ity 5 python statistics dataframe pandas

我有一个DataFrame,它看起来像:

  index  name   city
  0      Yam    Hadera
  1      Meow   Hadera
  2      Don    Hadera
  3      Jazz   Hadera
  4      Bond   Tel Aviv
  5      James  Tel Aviv
Run Code Online (Sandbox Code Playgroud)

我希望Pandas随机选择值,使用city列中的外观数量(使用类型:) df.city.value_counts(),所以我的魔术函数的结果,假设:

df.magic_sample(3, weight_column='city')
Run Code Online (Sandbox Code Playgroud)

可能看起来像:

  0     Yam      Hadera
  1     Meow     Hadera
  2     Bond     Tel Aviv
Run Code Online (Sandbox Code Playgroud)

谢谢!:)

Psi*_*dom 7

您可以分组city,然后根据与原始数据框长度相比的长度对每个组进行采样:

df.groupby('city', group_keys=False).apply(lambda g: g.sample(3 * len(g)/len(df)))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述