2015-04-28 22 views
0

我堆疊使用熊貓來追加每個文件。通過熊貓追加每個目錄和文件

我有每日目錄,每個目錄有相同的名稱文件。

這裏是一個例子。

  1. api.log,click.log,id.log位於20150401目錄。
  2. api.log,click.log,id.log位於20150402目錄。
  3. api.log,click.log,id.log位於20150403目錄。
  4. api.log,click.log,id.log位於20150404目錄。

我想將api.log收集到一個數據框中。

import os 
from pandas import DataFrame 
import pandas as pd 

dir_list = ['20150401','20150402','20150403','20150404'] 
counter = 0 
var_box = pd.DataFrame() 
for dir_date in dir_list: 
    next_path = current_path+"/"+dir_date 
    os.chdir(next_path) 

    df = pd.read_csv('api.log',sep="\t",names=['date_time','param','oid','url'],na_values=['NULL'])  
    try:   
     if counter == 0: 
      var_box2 = var_box.append(df) 
      counter += 1 
     else: 
      var_box3= var_box2.append(df) 
      counter += 1 
    except Exception as e: 
     print e.message 
print(var_box3) 

我檢查了這個結果,但var_box3沒有每個api.log文件。

感謝您的閱讀

+1

其中計數器聲明?不應該在嘗試之外聲明並初始化爲0,除非? – EdChum

+1

命名變量1,2,3等是您應該使用列表類型的典型符號。你的代碼有其他問題,但你應該在嘗試使用像熊貓這樣的包之前真正瞭解python迭代。 https://docs.python.org/2/tutorial/controlflow.html – firelynx

回答

1

什麼是計數器?你在for循環中忘了它嗎?


這裏的主要問題是,附加收益無:

var_box2 = var_box.append(df) 

和無沒有append方法,因此這將引發AttributeError:

var_box3 = var_box2.append(df) 

這是由引起你的異常,並被忽略。

通常你想避免捕捉異常,因爲這包括任何問題,例如如果你按Ctrl + C結束進程(這將被捕獲)。


我想你想從幾個在這裏做的,使一個框架的東西,是CONCAT:

pd.concat(var_box)