2017-08-13 91 views
1

我從數據中創建了一個數據框,我從AWS中提取數據。將對象類型列轉換爲數字,字符串等

我打算使用67列中的3列,並且我意識到這些列的數據類型是對象。

我想知道如何將這些對象數據類型更改爲其他內容。

我試過很多方法,但它不工作。

我的數據是這樣的:

formation_tops = pd.read_csv("C:/Users/juan/Documents/revonos-ds-sandbox/formation_tops/regulatory_agency=COGCC/000000_0", 
          sep='\t', header = None, names= cols1, index_col = False, dtype='unicode') 

然後,我創建了一個不同的數據框與3列我想:

  formation_name log_bottom log_top 
UWI           
05-001-05000  BENTONITE   \N 5118 
05-001-05000   D SAND   \N 5211 
05-001-05000  GREENHORN   \N 4908 
05-001-05000   J SAND   \N 5260 
05-001-05000  NIOBRARA   \N 4380 
05-001-05001  CARLILE   \N 4720 
05-001-05001   D SAND   \N 5131 
05-001-05001  GREENHORN   \N 4821 
05-001-05001   J SAND   \N 5179 
05-001-05001   MOWRY   \N 5034 
05-001-05001  NIOBRARA   \N 4227 

我嘗試了不同的方法來試圖改變數據類型和我有以下錯誤:

File "pandas\_libs\src\inference.pyx", line 1047, in pandas._libs.lib.maybe_convert_numeric (pandas\_libs\lib.c:56433) 

ValueError: Unable to parse string "\N" at position 0 

而且

cleaned_dataframe['log_bottom']= cleaned_dataframe.log_bottom.str.replace('\N', '') 
                      ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: malformed \N character escape 

我假設,因爲有一個unicode錯誤,我應該以某種方式編碼爲可讀格式。

任何幫助,將不勝感激。

+0

要修改哪些列?你想把它們轉換成什麼? – Batman

+0

你爲什麼要傳遞'dtype ='unicode'?只需將該參數移除到「pd.read_csv」 –

+0

第一個字符串,其他兩個數字(float或int)就可以。 –

回答

0

我能夠使用函數df['column'].convert_object(convert_numeric = True)轉換數據幀。

此功能允許列顯示爲float64。它會將\N轉換爲NaN並使用函數df.dropna(),我的數據幀現在已經清理完畢。