如何在预设条件下从数据帧中随机抽取一定数量的行?

2024-06-16 13:40:21 发布

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

我有以下数据帧:

d = {'Pic': ['D1', 'D1', 'D2', 'D2', 'D3', 'D3', 'D4', 'D4'], 'Rating': [42, 54, 61, 72, 43, 52, 91, 22], 'Pair': [1, 2, 1, 2, 1, 2, 1, 2]}
df = pd.DataFrame(data=d)
df
  Pic  Rating  Pair
0  D1      42     1
1  D1      54     2
2  D2      61     1
3  D2      72     2
4  D3      43     1
5  D3      52     2
6  D4      91     1
7  D4      22     2

我需要选择2行的子集,这样Pic列中就有2个唯一的值,但是如果随机选取一个值(例如,从列Pic中选取“D1”),那么也会选取相应的对(因此,将选取具有D1的行,该行具有对1,且D1具有对2)

我尝试了以下方法:

df_Selected= df.sample(n=2, random_state=2)

但我不知道如何确保从“Pic”列中随机选择的每个值也从“pair”列中选择其对。因此,如果随机选取以下行:

   Pic  Rating  Pair
0  D1      42     1

我还需要随机选择以下行:

       Pic  Rating  Pair
    0  D1      42     2

Tags: 数据方法dataframedfdata子集d2d1
1条回答
网友
1楼 · 发布于 2024-06-16 13:40:21
import pandas as pd
import random

d = {'Pic': ['D1', 'D1', 'D2', 'D2', 'D3', 'D3', 'D4', 'D4'],
     'Rating': [42, 54, 61, 72, 43, 52, 91, 22],
     'Pair': [1, 2, 1, 2, 1, 2, 1, 2]}

df = pd.DataFrame(data=d)

random_pic_list = random.sample(df['Pic'].unique().tolist(), 2)

df_slice = df[df['Pic'].isin(random_pic_list)]

print(df_slice)

    Pic Rating  Pair
0   D1  42  1
1   D1  54  2
2   D2  61  1
3   D2  72  2

相关问题 更多 >