首页 > 解决方案 > python - 如何从python中的数据框中选择一些记录?

问题描述

我需要从我的数据框中选择一些记录进行分析,比如说我需要从有 100 条记录的数据框中选择 33% 的记录(例如)。我需要从我的数据框中随机选择 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] 

我们是否有任何其他功能可以从数据框中获取准确的记录百分比?先感谢您。亚历克斯

标签: pythonpython-3.xpandasdataframe

解决方案


randint在列表理解中不能保证均匀分布,也不能保证没有重复。

使用该random模块,您可以使用,它提供了一个无需替换random.sample的示例:

from random import sample

num = int(len(Mission_3_0A.index) * 0.33)  # e.g. for 33%
indices = sample(Mission_3_0A.index, k=num)
DF_2 = DF_1.loc[indices].copy()

使用 NumPy,您可以使用np.random.choice,指定replace=False

indices = np.random.choice(Mission_3_0A.index, size=num, replace=False)
DF_2 = DF_1.loc[indices].copy()

最惯用的是使用pd.DataFrame.sample

DF_2 = DF_1.sample(n=num)     # absolute number
DF_2 = DF_1.sample(frac=1/3)  # give fraction (floored if not whole)

推荐阅读