Используйте понимание списка с concat
, а также важно DataFrame.reset_index
с drop=True
для избежания тех же значений столбцов (потому что индекс выровнять enet):
r = np.arange(10)
L = [df['x'].sample(frac=1).reset_index(drop=True) for i in r]
df_pull = pd.concat(L, axis=1, keys=r)
Ваше решение с пустым DataFrame, а также DataFrame.reset_index
:
df = pd.DataFrame({
'y':[7,8,9,4,2,3],
'x':[1,3,5,7,1,0],
})
df_pull = pd.DataFrame()
for i in np.arange(10):
df_pull[i] = df['x'].sample(frac=1).reset_index(drop=True)
print (df_pull)
0 1 2 3 4 5 6 7 8 9
0 1 7 1 1 1 5 3 5 3 1
1 7 1 5 5 0 1 1 1 7 7
2 5 0 0 7 1 3 5 3 1 5
3 3 3 3 0 3 0 7 1 1 3
4 0 1 7 1 5 7 1 7 5 1
5 1 5 1 3 7 1 0 0 0 0