我的Y
是
AdoptionSpeed
0 2
1 0
2 3
3 2
4 2
5 2
6 1
7 3
8 1
9 4
... ...
14987 0
14988 2
14989 4
14990 3
14991 4
14992 3
[14993 rows x 1 columns]
我想把它变成。。。
0 1 2 3
0 1 1 0 0
1 0 0 0 0
2 1 1 1 0
....
14991 1 1 1 1
所以基本上所有带有2的条目都变成
[1 1 0 0]
等等。 最佳答案
和我以前的解决方案一样
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
广播:应该比for循环快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
关于python - 如何将Pandas DataFrame转换为数组表示形式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54951632/