在存在某些条件的情况下,如何根据该数据帧的列值随机选择该数据帧的记录?

时间:2019-09-04 19:00:59

标签: python pandas numpy random

我有一个像这样的数据集:

enter image description here

df

我想选择"MI"个样本并添加到另一个数据框中。例如:如果Rank = 0,我想随机选择MI = 2行。或者,如果Rank = 1,我想选择MI = 5行。 这是我的代码,但是不起作用

All_M=pd.DataFrame()
A= df['Ranking'].min()

for i in range(0 , len(df)):
    x6 = df[(df['Ranking'] == A)].apply(lambda x:x.sample(int(df["MI"][i])).reset_index(drop=True))
    All_M= x6.append(All_M)
    A = A + 1 

1 个答案:

答案 0 :(得分:0)

IIUC,我认为您可以使用groupby语句来实现无循环操作

 new_df = df.groupby('rank', group_keys=False)\
            .apply(lambda x: x.sample(x.iloc[0, x.columns.get_loc('MI')]))