pandas 相对于组大小的样本
pandas sample relative to group size
我想从数据库中按组对行进行采样。但是每个样本的大小必须与每组中的行数成正比。
它涉及在不同国家和不同年份实施的项目清单(这些是我的小组)。我想从列表中抽样项目,与每个组中的项目总数成比例。
下面的table显示了已实施项目的数量和比例。
因此,例如我想从 2016 年在布基纳法索实施的 10 个项目中抽取 2 个项目。
我正在尝试使用 .sample()
函数和 .groupby()
函数,但我不知道如何同时使用这两个函数?
如果df1
是来自图片的DataFrame并且df
是原始DataFrame使用DataFrame.join
:
df = df.join(df1['Percent of Project'],
on=['Initial Financial Year','Area of Intervention'])
然后使用GroupBy.apply
with lambda function and DataFrame.sample
:
f = lambda x: x.sample(x['Percent of Project'].iat[0])
df = (df.groupby(['Initial Financial Year','Area of Intervention'], group_keys=False)
.apply(f))
我想从数据库中按组对行进行采样。但是每个样本的大小必须与每组中的行数成正比。
它涉及在不同国家和不同年份实施的项目清单(这些是我的小组)。我想从列表中抽样项目,与每个组中的项目总数成比例。
下面的table显示了已实施项目的数量和比例。
因此,例如我想从 2016 年在布基纳法索实施的 10 个项目中抽取 2 个项目。
我正在尝试使用 .sample()
函数和 .groupby()
函数,但我不知道如何同时使用这两个函数?
如果df1
是来自图片的DataFrame并且df
是原始DataFrame使用DataFrame.join
:
df = df.join(df1['Percent of Project'],
on=['Initial Financial Year','Area of Intervention'])
然后使用GroupBy.apply
with lambda function and DataFrame.sample
:
f = lambda x: x.sample(x['Percent of Project'].iat[0])
df = (df.groupby(['Initial Financial Year','Area of Intervention'], group_keys=False)
.apply(f))