2017-08-01 70 views
2

大熊貓數據幀顯示爲整數花車。 但我想顯示這些整數作爲整數。大熊貓數據框中顯示整數作爲浮動

X_train = train.iloc[:, 1:].values.astype('float32') 
y_train = train.iloc[:, 0].values.astype('uint8') 
X = test.values.astype('float32') 

所以,dtypes是'float32','unit8'和'float32'。

顯示分鐘,並X_train,y_train和X在一個數據幀最大值(在Jupyter筆記本)。

pd.DataFrame([[np.amin(X_train), np.amax(X_train)], 
       [np.amin(y_train), np.amax(y_train)], 
       [np.amin(X), np.amax(X)]], 
      columns = ['min', 'max'], 
      index = ['X_train', 'y_train', 'X']) 

輸出:

 min max 
X_train 0.0 255.0 
y_train 0.0 9.0 
X  0.0 255.0 

但我希望:

 min max 
X_train 0.0 255.0 
y_train 0 9 
X  0.0 255.0 

但是......

print(np.amax(y_train)) 

輸出至9(不是9.0)

有什麼建議嗎?

+0

列不能有混合數據類型,除非你使用'D型= object'整個列,在這種情況下,你可能也甚至不使用'pandas'。所以,'pandas'(或者可能是底層'numpy'數組)已經使用類型提升到'float32' –

回答

2

pandas類型的列的東西。所以每一列都會有一個特定的dtype。它確定了坯連鑄int更好,這樣整列可float而不是保持列D型object

df = pd.DataFrame([ 
    [0., 255.], 
    [0, 9], 
    [0., 255.] 
]) 

df 

    0  1 
0 0.0 255.0 
1 0.0 9.0 
2 0.0 255.0 

df.dtypes 

0 float64 
1 float64 
dtype: object 

使用dtype=object保留單獨的類型。

df = pd.DataFrame([ 
    [0., 255.], 
    [0, 9], 
    [0., 255.] 
], dtype=object) 

df 

    0 1 
0 0 255 
1 0 9 
2 0 255 

df.dtypes 

0 object 
1 object 
dtype: object 

df.applymap(type) 

       0    1 
0 <class 'float'> <class 'float'> 
1 <class 'int'> <class 'int'> 
2 <class 'float'> <class 'float'> 

我只用這個報告的目的。如果你想用這個進行進一步的計算,你會失去很多效率。我會花時間重新安排您的數據。

+0

謝謝!你是對的,DataFrame中的每一列都有它自己的dtype。交換行和列之後,它會給出所需的輸出。 – Rene

0

DataFrame默認由作爲所有相同類型的元件的2D陣列的,因爲它是由一個NumPy的2D陣列的支持。在這種情況下,你的一些值是浮點數,所以它選擇了一個浮點類型。如果你想擁有不同類型的行,你需要將它們作爲單獨的系列添加。有關更多信息,請參閱this answer