除第一行之外的Shuffle DataFrame行

djl*_*djl 2 python numpy shuffle dataframe pandas

我试图随机化数据框中除第一行之外的所有行.我希望第一行始终首先显示,其余行可以按任意随机顺序排列.

我的数据框是:

 df = pd.DataFrame(np.random.randn(10, 5), columns=['a', 'b', 'c', 'd', 'e'])
Run Code Online (Sandbox Code Playgroud)

有关如何处理这个问题的任何建议吗?

Max*_*axU 5

试试这个:

df = pd.concat([df[:1], df[1:].sample(frac=1)]).reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)

测试:

In [38]: df
Out[38]:
          a         b         c         d         e
0  2.070074  2.216060 -0.015823  0.686516 -0.738393
1 -1.213517  0.994057  0.634805  0.517844 -0.128375
2  0.937532  0.814923 -0.231120  1.970019  1.438927
3  1.499967  0.105707  1.255207  0.929084 -3.359826
4  0.418702 -0.894226 -1.088968  0.631398  0.152026
5  1.214119 -0.122633  0.983818 -0.445202 -0.807955
6  0.252078 -0.258703 -0.445209 -0.179094  1.180077
7  1.428827 -0.569009 -0.718485  0.161108  1.300349
8 -1.403100  2.154548 -0.492264 -0.544538 -0.061745
9  0.468671  0.004839 -0.738240 -0.385624 -0.532640

In [39]: df = pd.concat([df[:1], df[1:].sample(frac=1)]).reset_index(drop=True)

In [40]: df
Out[40]:
          a         b         c         d         e
0  2.070074  2.216060 -0.015823  0.686516 -0.738393
1  0.468671  0.004839 -0.738240 -0.385624 -0.532640
2  0.418702 -0.894226 -1.088968  0.631398  0.152026
3 -1.213517  0.994057  0.634805  0.517844 -0.128375
4  1.428827 -0.569009 -0.718485  0.161108  1.300349
5  0.937532  0.814923 -0.231120  1.970019  1.438927
6  0.252078 -0.258703 -0.445209 -0.179094  1.180077
7  1.499967  0.105707  1.255207  0.929084 -3.359826
8 -1.403100  2.154548 -0.492264 -0.544538 -0.061745
9  1.214119 -0.122633  0.983818 -0.445202 -0.807955
Run Code Online (Sandbox Code Playgroud)