【问题标题】:Python Pandas - Sampling: putting a limit on number of items on a Random selectionPython Pandas - 采样:限制随机选择的项目数量
【发布时间】:2020-04-28 22:35:18
【问题描述】:
假设我有一个看起来像这样的数据框:
id_1 id_2
aa 123
bb 123
cc 234
dd 123
ee 678
FF 456
gg 123
在 id_2 列中最多只能有 3 个(或任何其他数量)相同项目的条件下,我如何进行抽样?我们不一定需要此列有 3 或 2 个相同的项目(因为它是随机样本,它必须是随机选择),但如果要重复它最多可以是 X 次(由阈值)
假设 n=5,阈值为 3
id_1 id_2
aa 123
dd 123
ee 678
FF 456
gg 123
【问题讨论】:
标签:
python
pandas
sampling
【解决方案1】:
import pandas as pd
df = pd.read_clipboard()
def get_sample(df, thresh):
df1 = df.sample(n=5)
while df1.id_2.value_counts().max() > thresh:
print(df1.id_2.value_counts().max())
df1 = df.sample(n=5)
return df1
df1 = get_sample(df, 3)
print(df1)
id_1 id_2
3 dd 123
4 ee 678
5 FF 456
6 gg 123
1 bb 123