如何在python中从dataframe中选择某些%的记录?

如何在python中从dataframe中选择某些%的记录?,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我需要从我的数据框中选择一些记录进行分析,比如说我需要从我的数据框中选择33%的记录,它有100条记录(作为一个例子)。我需要从我的数据框中随机选择33条记录。我尝试了“random.randint”,但这并没有给出准确的33%的记录,它只给出了大约33%的记录。下面是我的代码: DF_1['ran'] = [random.randint(0,99) for k in DF_1.index] DF_2=DF_1[DF_1['ran']<33] DF_1['ran']=[random

我需要从我的数据框中选择一些记录进行分析,比如说我需要从我的数据框中选择33%的记录,它有100条记录(作为一个例子)。我需要从我的数据框中随机选择33条记录。我尝试了“random.randint”,但这并没有给出准确的33%的记录,它只给出了大约33%的记录。下面是我的代码:

DF_1['ran'] = [random.randint(0,99)  for k in DF_1.index]

DF_2=DF_1[DF_1['ran']<33] 
DF_1['ran']=[random.randint(0,99)表示DF_1.index中的k]

列表理解中的DF_2=DF_1[DF_1['ran']
randint
不能保证均匀分布,也不能保证没有重复

使用
random
模块,您可以使用,该模块提供无需更换的样本:

对于NumPy,您可以使用,指定
replace=False

indices = np.random.choice(Mission_3_0A.index, size=num, replace=False)
DF_2 = DF_1.loc[indices].copy()
最惯用的用法是:

?
indices = np.random.choice(Mission_3_0A.index, size=num, replace=False)
DF_2 = DF_1.loc[indices].copy()
DF_2 = DF_1.sample(n=num)     # absolute number
DF_2 = DF_1.sample(frac=1/3)  # give fraction (floored if not whole)