如何按照图中所示的多个条件,对dataframe数据进行抽样,并计算不同抽样结果的个数?
补充:目的是从df数据中抽取满足图中三类分层条件和抽样数量的30个数据

如何按照图中所示的多个条件,对dataframe数据进行抽样,并计算不同抽样结果的个数?
补充:目的是从df数据中抽取满足图中三类分层条件和抽样数量的30个数据

关注引自免费微信小程序:皆我百晓生
要实现对dataframe多列同时进行特定抽样数量的分层抽样,可以按照以下步骤进行:
创建一个新的列来标识每一行的分层条件,可以使用apply函数和lambda表达式来实现多个条件的拼接。例如,对于"职位层级"和"工作时间"两列,可以使用以下代码创建一个新的列"分层条件":
df['分层条件'] = df.apply(lambda row: row['职位层级'] + '_' + row['工作时间'], axis=1)
根据分层条件和抽样数量,计算每个条件应该抽样的数量。可以使用groupby函数和transform函数来实现。
df['抽样数量'] = df.groupby('分层条件')['抽样数'].transform(lambda x: x.sum() if not x.empty else 0)
对于每个分层条件,根据抽样数量进行抽样。可以使用groupby函数和apply函数来实现。
sampled_df = df.groupby('分层条件', group_keys=False).apply(lambda x: x.sample(min(len(x), x['抽样数量'].iloc[0])))
输出抽样结果和不同抽样结果的个数。
print(sampled_df) # 打印抽样结果
print(sampled_df['分层条件'].value_counts()) # 打印不同抽样结果的个数
注意:以上代码假设数据已经导入到名为df的dataframe中,且列名与图1中的内容相对应。请根据实际情况进行适当修改。