随机抽取x个样本,用numpy替换

2024-04-26 08:10:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,看起来像这样:

    revisionId  itemId wikidataType
1    307190482      23           Q5
6    305019084      80           Q5
8    303692414     181           Q5
9    306600439     192           Q5
11   294597048     206           Q5

在完整的数据帧中,wikidataType列中存在100个这样的不同值。这是一个很大的数据帧,因此我想将它限制为每wikidataType1000条记录,并使用以下方法随机选择它:

df = df.groupby('wikidataType', group_keys=False).apply(lambda x: x.sample(1000)
        if len(x) > 1000 else x.sample(1000, replace=True))

如果某些类型没有1000条记录,那么我希望使用“with replacement”策略使所有wikidataTypes的记录数相同。因此,我使用replace=True。例如,如果wikidataTypeQ5我有900条记录,那么我想从这900条记录中随机重复一些100条记录。最后我会有900条不同的记录,其中100条重复。我使用了x.sample(1000, replace=True),但是对于类型Q5,这只给了我4条不同的记录,每一条记录都重复了很多次,而实际上我有1000条不同的记录。我如何解决这个问题?你知道吗


Tags: 数据sample方法true类型df记录group