python - Python Pandas - 采样:限制随机选择的项目数量
问题描述
假设我有一个如下所示的数据框:
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
解决方案
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
推荐阅读
- facebook-opengraph - Facebook 微数据调试器不显示 OpenGraph、Schema 的任何预览
- php - PHP无效的引用可打印序列,来自Yahoo的格式错误的q编码
- bash - 使用 bash 通配符按数字排序
- python - 熊猫:Excel sumifs 等价物
- protocol-buffers - 原型。我的导入原型文件不起作用。为什么我得到错误“类型”不是类型。”?
- angular - 如何在一个json响应中设置一个将键和值分成不同数组的材料角度表?
- netlogo - 更新 Netlogo 中的列表
- ios - ViewControllers 之间的转换没有为正确的 VC 设置动画
- python - 在 CustomVision.ai API 中发布数据时出错
- javascript - 初学者问题 - 提示、变量和范围