Вот более быстрый способ сделать это: 1 миллион (10 лакх) строк:
Метод 1: выборка с использованием pandas встроенного
n_times = 1000000
values = [df_2.sample(n=1).mean(axis=0, numeric_only=True) for _ in range (n_times)]
train = pd.DataFrame(values, columns=['mean_col'])
Метод 2: Выборка с использованием numpy
def f1():
return np.mean(df_2.values[np.random.randint(0, df.shape[0])])
def f2():
return df_2.iloc[np.random.randint(0, df.shape[0])].mean(axis=0, numeric_only=True)
values = [f1() for _ in range(n_times)]
train = pd.DataFrame(values, columns=['mean_col'])
values = [f2() for _ in range(n_times)]
train = pd.DataFrame(values, columns=['mean_col'])