2016-09-23 51 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,... 

这个简单的标志固定我的问题。