2013-11-26 31 views
2

我有一些數據文件是由我實驗室中使用的一些相當黑客的腳本產生的。這個腳本非常有趣,因爲它在每個文件頭之間添加的行數(儘管它們具有相同的格式並且具有相同的頭文件)。從csv中讀取熊貓數據幀,從非修復頭開始

我在寫一個批處理來處理所有這些文件到數據框。如果我不知道這個位置,我該如何讓熊貓識別正確的標題?我知道確切的heder文本以及直接在它之前出現的兩行文本(它們是文檔中\r\n的唯一連續實例)。

我試圖在文檔的末尾,用於定義空跳躍,並選擇數據行的每個文件包含(謝天謝地)定數:

df = pd.read_csv(myfile, skipfooter=0, nrows=267) 

這沒有奏效。

您有任何進一步的想法嗎?

+0

不知道是否有一個更好的大熊貓的方式,但你能預讀csv文件,計數空行的數量然後使用read_csv的skiprows命名參數? http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html –

回答

2

您可以打開文件,並重復,直到連續\r\n得到滿足,並通過結果來分析程序,即

with open(csv_file_name, 'rb') as source: 
    consec_empty_lines = 0 
    for line in source: 
     if line == '\r\n': 
      consec_empty_lines += 1 
      if consec_empty_lines == 2: 
       break 
     else: 
      consec_empty_lines = 0 
    df = pd.read_csv(source) 
+0

嗯...顯然,if語句不會對我的兩個空白行做出反應 - 兩個空行意味着'\ n \ n' - 對嗎?在我的文檔的這些行中也沒有製表符或空格...: -/ – TheChymera

+0

@TheChymera Imho,兩個空白行被連續讀取爲兩個'\ n',但您可以測試並查看。由於您沒有提供任何測試數據,我沒有對它進行測試。我希望你明白,並且可以詳細闡述滿足你特定需求的解決方案。 – alko

+0

可以以某種方式打印原始文本嗎? – TheChymera