2016-09-23 53 views
1

我與熊貓數據幀的以下問題掙扎 的Python 2.7.12 大熊貓0.18.1大熊貓據幀問題有特殊字符

df = pd.read_csv(file_name, encoding='utf-16', header=0, index_col=False, error_bad_lines=False, 
        names=['Package_Name','Crash_Report_Date_And_Time','Crash_Report_Millis_Since_Epoch','Device', 'Android_OS_Version','App_Version_Name','App_Version_Code','Exception_Class_Name','Exception_Message','Throwing_File_Name','Throwing_Class_Name','Throwing_Method_Name','Throwing_Line_Number','Native_Crash_Library','Native_Crash_Location','Crash_Link']) 

我調試的代碼,發現下面的數據不正確的插入數據幀。

Exception_Message字段中有一些特殊字符,它告訴熊貓將該行上的其餘數據移動到下一行。

一些如何熊貓沒有正確讀取文件。

以下是兩行的輸出。行號是137和138。

Package_Name Crash_Report_Date_And_Time \ 
137 com.vcast.mediamanager  2016-09-05 14:54:13 
138      NaN     Class.java 

    Crash_Report_Millis_Since_Epoch  Device Android_OS_Version \ 
137     1473087253130  victara     22 
138     java.lang.Class classForName     -2 

    App_Version_Name App_Version_Code \ 
137   14.3.34  1.503050e+09 
138    NaN    NaN 

            Exception_Class_Name \ 
137     java.lang.ClassNotFoundException 
138 https://play.google.com/apps/publish?dev_acc=0... 

        Exception_Message Throwing_File_Name Throwing_Class_Name \ 
137 Invalid name: com.strumsoft.appen    NaN     NaN 
138        NaN    NaN     NaN 

    Throwing_Method_Name Throwing_Line_Number Native_Crash_Library \ 
137     NaN     NaN     NaN 
138     NaN     NaN     NaN 

    Native_Crash_Location Crash_Link account_id 
137     NaN  NaN  NONE 
138  

     NaN  NaN  NONE 

行138被錯誤地與一些數據從行創建在137 137. Exception Message字段具有一些被打破該行到下一行的值。這是錯誤的。

我試過不同的編碼沒有任何幫助。任何人都可以幫忙嗎?

+1

這不是編碼問題。這個問題很可能是由於第137行的'Exception_Message'中的分隔符(主要是逗號)造成的。通過引用該消息或將其更改爲另一個文字或轉義它來刪除該分隔符... – Kartik

+0

@Kartik感謝您的評論。 ..其實我錯過了'lineterminator'標誌 – Dutta

回答

0

所以解決方案非常簡單。在熊貓0.18我必須指定lineterminator='n'

df = pd.read_csv(file_name,lineterminator='\n', encoding='utf-16', delimiter=',', header=0, index_col=False, error_bad_lines=False,... 

這個簡單的標誌固定我的問題。