我有一个dataframe与100 000行包含国家,州,bill_ID,item_id,日期等...列我想从100k行中随机抽取5k行,这些行应该至少有一个来自所有国家和州的bill_ID。简而言之,它应该覆盖至少具有一个bill_ID的所有国家和州。注意:bill_ID包含多个item_id我正在做一个抽样数据测试,其中应涵盖所有独特的国家和国家有bill_ID。
b09cbbtk1#
你可以使用Pandas的.sample方法。使用df,您的 Dataframe 尝试:
.sample
df
sample_size = 5_000 df_sample_1 = df.groupby(["Country", "State"]).sample(1) sample_size_2 = max(sample_size - df_sample_1.shape[0], 0) df_sample_2 = df.loc[df.index.difference(df_sample_1.index)].sample(sample_size_2) df_sample = pd.concat([df_sample_1, df_sample_2]).sort_index()
第一组按Country和State列并抽取尺寸为1的样品。这将提供一个示例df_sample_1,它只覆盖每个Country-State-组合一次。然后从不包含第一个样本的数据框架中提取其余部分:df_sample_2。最后连接两个样本(如果需要,对结果进行排序)。
Country
State
df_sample_1
df_sample_2
1条答案
按热度按时间b09cbbtk1#
你可以使用Pandas的
.sample
方法。使用df
,您的 Dataframe 尝试:第一组按
Country
和State
列并抽取尺寸为1的样品。这将提供一个示例df_sample_1
,它只覆盖每个Country
-State
-组合一次。然后从不包含第一个样本的数据框架中提取其余部分:df_sample_2
。最后连接两个样本(如果需要,对结果进行排序)。