在創(chuàng)建DataFrame的時候常常使用reshape來更改數(shù)據(jù)的列數(shù)和行數(shù)。
reshape可以用于numpy庫里的ndarray和array結(jié)構(gòu)以及pandas庫里面的DataFrame和Series結(jié)構(gòu)。


reshape(行,列)可以根據(jù)指定的數(shù)值將數(shù)據(jù)轉(zhuǎn)換為特定的行數(shù)和列數(shù),這個好理解,就是轉(zhuǎn)換成矩陣。
然而,在實際使用中,特別是在運(yùn)用函數(shù)的時候,系統(tǒng)經(jīng)常會提示是否需要對數(shù)據(jù)使用reshape(1,-1)或者reshape(-1,1)進(jìn)行轉(zhuǎn)換,那這兩個轉(zhuǎn)換是什么意思呢?難道還有-1行的數(shù)據(jù)?
我們來嘗試一下:

在使用了reshape(-1,1)之后,數(shù)據(jù)集似乎變成了一列,這樣看起來不明顯,我們把這些數(shù)據(jù)導(dǎo)出到excel看看:


在excel里直接變成了一列。
那么reshape(1,-1)呢?也就是直接變成了一行了。
那這個-1在這里要怎么理解呢?
跟進(jìn)numpy庫官網(wǎng)的介紹,這里的-1被理解為unspecified value,意思是未指定為給定的。如果我只需要特定的行數(shù),列數(shù)多少我無所謂,我只需要指定行數(shù),那么列數(shù)直接用-1代替就行了,計算機(jī)幫我們算贏有多少列,反之亦然。
所以-1在這里應(yīng)該可以理解為一個正整數(shù)通配符,它代替任何整數(shù)。
我們拿剛才的數(shù)據(jù)來試試看:

由上圖可知,指定為-1的時候,其行或列會隨機(jī)分配一個數(shù)據(jù)。