def create_fold(df, fold_seed, frac):
	"""create random split
	
	Args:
	    df (pd.DataFrame): dataset dataframe
	    fold_seed (int): the random seed
	    frac (list): a list of train/valid/test fractions
	
	Returns:
	    dict: a dictionary of splitted dataframes, where keys are train/valid/test and values correspond to each dataframe
	"""
	train_frac, val_frac, test_frac = frac
	test = df.sample(frac = test_frac, replace = False, random_state = fold_seed)
	train_val = df[~df.index.isin(test.index)]
	val = train_val.sample(frac = val_frac/(1-test_frac), replace = False, random_state = 1)
	train = train_val[~train_val.index.isin(val.index)]

	return {'train': train.reset_index(drop = True),
			'valid': val.reset_index(drop = True),
			'test': test.reset_index(drop = True)}