То же, что и мое предыдущее решение
pd.DataFrame([np.ones(x) for x in df['AdoptionSpeed']]).fillna(0).astype(int)
Out[70]:
0 1 2 3
0 1 1 0 0
1 0 0 0 0
2 1 1 1 0
3 1 1 0 0
4 1 1 0 0
5 1 1 0 0
6 1 0 0 0
7 1 1 1 0
8 1 0 0 0
9 1 1 1 1
Или больше похоже на numpy
широковещание: должно быть быстрее, чем для цикла
x=df.AdoptionSpeed.max()
pd.DataFrame((df.AdoptionSpeed.values[:,None]>np.arange(x)).astype(int))
Out[81]:
0 1 2 3
0 1 1 0 0
1 0 0 0 0
2 1 1 1 0
3 1 1 0 0
4 1 1 0 0
5 1 1 0 0
6 1 0 0 0
7 1 1 1 0
8 1 0 0 0
9 1 1 1 1