我有一个大数据集,我需要从中随机抽样一个较小的数据集。第一列由不同的车辆ID组成,应从这些车辆ID中进行采样。每辆车都有不止一个记录,因此我在一辆车上有多行。放下我正在使用的代码,但这会花费很多时间。我想知道是否有更快的方法。
示例:
df:
vehicle_ID SectionID time
1 200 00:00:03
100 237 00:00:03
1 1872 00:00:06
代码
veh = df['vehicle_ID'].unique()
sample = random.sample(list(veh), 12900)
ndf = pd.DataFrame()
for i in sample:
new = df[df['vehicle_ID']==i]
ndf=ndf.append(new , ignore_index =True)
答案 0 :(得分:0)
尝试一下:
# Select a vehicle_id
data1 = df[df.vehicle_ID == np.random.choice(df['vehicle_ID'].unique())].reset_index(drop=True)
# Get a random index from data1
start_ix = np.random.choice(data1.index[:-3])
# Get a sequence starting at the random index from the previous step
print(df.loc[start_ix:start_ix+3])