pandas 使用python基于其他列的随机样本数据

ig9co6j1  于 2023-06-20  发布在  Python
关注(0)|答案(1)|浏览(115)

我有一个dataframe与100 000行包含国家,州,bill_ID,item_id,日期等...列我想从100k行中随机抽取5k行,这些行应该至少有一个来自所有国家和州的bill_ID。简而言之,它应该覆盖至少具有一个bill_ID的所有国家和州。
注意:bill_ID包含多个item_id
我正在做一个抽样数据测试,其中应涵盖所有独特的国家和国家有bill_ID。

b09cbbtk

b09cbbtk1#

你可以使用Pandas的.sample方法。使用df,您的 Dataframe 尝试:

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()

第一组按CountryState列并抽取尺寸为1的样品。这将提供一个示例df_sample_1,它只覆盖每个Country-State-组合一次。然后从不包含第一个样本的数据框架中提取其余部分:df_sample_2。最后连接两个样本(如果需要,对结果进行排序)。

相关问题