2015-04-28 24 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)