bootstrap samples
def bootstrap(df, n, to_df=True):
"""
generate n bootstraped samples from a DataFrame
"""
assert isinstance(df, type(pd.DataFrame())),\
f"Expected pandas.DataFrame, got type: {type(df)}"
sample = {column: np.random.choice(df[column], size=int(n)) for column in df.columns} # column: bootstrap sample
if to_df: sample = pd.DataFrame.from_dict(sample) # convert to DataFrame
return sample