2017-03-01 2 views
1

여러 개의 .csv 파일에서 데이터를 추출하여 pandas의 하나의 큰 데이터 프레임으로 결합하려고합니다. 이렇게하려면 들어오는 데이터로 채워야하는 하나의 데이터 프레임을 만들었습니다 데이터 프레임.Python : Pandas dataframe - concatinated 대신 덮어 쓴 데이터

final_df = DataFrame(columns=['Column1','Column2','Column3']) 

for file in glob.glob("file.csv"): 
    name_csv = str(file) 
    logfile = pd.read_csv(name_csv, skip_blank_lines = False) 
    df = DataFrame(logFile, columns=['Column1','Column2','Column3'] 
    concat = pd.concat([final_df,df]) 

그러나 루프를 반복 할 때마다 이전에 추출 된 데이터를 덮어 씁니다. 이 문제를 어떻게 해결할 수 있습니까? logfile 이미 잘 사용 매개 변수 names df 명령이다 -

는 또한 read_csv 일부 개선 :

답변

1

는 먼저 append 모든 dfconcatlist에 다음 사용을 필요로한다.

dfs = [] 
for file in glob.glob("*.csv"): 
    logfile = pd.read_csv(str(file), 
          skip_blank_lines = False, 
          names = ['Column1','Column2','Column3']) 
    dfs.append(logfile) 

concat = pd.concat(dfs) 

또는 사용 list comprehension :

dfs = [pd.read_csv(str(file), 
     skip_blank_lines = False, 
     names = ['Column1','Column2','Column3']) for file in glob.glob("*.csv")] 

concat = pd.concat(dfs) 
+0

보인다. – languitar

+0

@languitar - 감사합니다. – jezrael

2

당신은 모든 pd.concat의 결과를 사용하고 있지 않습니다. 변수 concat은 각 반복에서 폐기되지만 부분 데이터 프레임이됩니다.

1

당신은 안양의 목록을 작성하고 마지막에 모두 CONCAT한다 : 괄호는 목록의 이해 잘못처럼

concat_list = [] 
for file in glob.glob("file.csv"): 
    name_csv = str(file) 
    logfile = pd.read_csv(name_csv, skip_blank_lines = False) 
    df = DataFrame(logFile, columns=['Column1','Column2','Column3'] 
    concat_list.appned(df) 
final_df = pd.concat(concat_list) 
+0

이 경우에는 'final_df'의 첫 번째 인스턴스를 유지할 이유가 없습니다. 결국 교체 될 것입니다. – languitar

+0

@languitar, 그것을 잊어 버렸습니다, 감사합니다 :) –

관련 문제