首页 > 解决方案 > 在 Python Panda 中做一个 groupby 的样本时,如何获得一个四舍五入的样本

问题描述

现在我正在使用这个 python 代码使用pandas

grouped = df.groupby('EmployeeID')
temp = grouped.apply(lambda x: x.sample(frac= 0.1) 

场景 1:如果 EmployeeID: 1 有 15 行,我将得到 2 个样本行作为结果。(15 行 *10%)

场景 2:如果employeeID 2 有 12 行,我将得到 1 个样本行。(12 行 * 10%)

我的问题是关于场景 2,我如何四舍五入以便得到 2 行而不是 1 行

12 行变成临时的 20 行,这样我就可以做 20 行 *10% = 2 行。

标签: pythonpandasdataframe

解决方案


IIUC 你可以math.ceil像这样使用:

from math import ceil

grouped = df.groupby('EmployeeID')
temp = grouped.apply(lambda g: g.sample(n=ceil(0.1 * len(g))))

推荐阅读