2016-12-23 2 views
1

폴더에 약 100 개의 csv 파일이 있습니다.폴더에서 여러 csv 파일을 하나의 csv 파이썬으로 결합하십시오.

/path/to/directory/*.csv 
it has files abc.csv,dsf.csv,rgfb.csv.....etc 

csv 파일보기.

182 a 1 4 242 52450 
182 a 1 2 242 7176 
182 c 1 1 242 7176 
182 c 1 1 242 7410 

나는 디렉토리에서이 모든 csv를 가져 와서 하나의 csv로 만듭니다. 에는 열 이름이 없습니다, 그러나 모든 CSV (예 5) 열 같은 어떤을 가지고 있으며, 나는 모든 CSV에 가입하고, 팬더 dataframe에 넣어

col1 col2 col3 col4 col5 
data data data data data 
... ... ... ... ... 

로 열 이름을 을주고 싶어 내가 시도했다.

import os 
csv_list = [] 
for root, dirs,files in os.walk("path/to/directory", topdown=True): 
for name in files: 
    csv_list.append(os.path.join(root, name)) 

난 후 내가
import pandas as pd 
combined_csv = pd.append([ pd.read_csv(f) for f in csv_list ]) 

을했지만이 수평이 아닌 수직으로 추가됩니다

CSV

의 목록을 얻었다.

또한 'combined_csv'에 열 이름을 지정해야합니다. 더 좋은 방법이 있습니까?

답변

1

나는 수직으로 추가해야하는 경우이 매개 변수 axis=1concat 필요하다고 생각 :

combined_csv = pd.concat([ pd.read_csv(f, header=None) for f in csv_list ], axis=1) 

을 그리고 추가해야 할 경우 수평 생략 할 수있는 기본 매개 변수 axis=0입니다 :

import pandas as pd 
combined_csv = pd.concat([ pd.read_csv(f, header=None) for f in csv_list ], ignore_index=True) 

만약 필요 설정 열 이름 매개 변수를 사용하십시오 names :

names = ['col1','col2','col3','col4','col5'] 
combined_csv = pd.concat([ pd.read_csv(f, header=None, names = names) for f in csv_list ], 
          ignore_index=True) 
+0

확인을 편집하면 내 CSV 파일을 볼 수 있으며 답변이 작동하지 않습니다. 내가 11 행 csv 파일을하려고했을 때 나는'5 행 × 66 열'을 얻고있다. – Shubham

+0

1csv는 5 개의 coulmns를 가지고 있으며, 인덱스를 추가하고있다. 따라서 6 개의 열과 11 개의 CSV 파일을 연결하면 11x6 = 66 열 – Shubham

+0

매개 변수를 추가하고'combined_csv = pd.concat (csv_list의 f에 대해 pd.read_csv (f, header = None), 축 = 1)을 실행 한 후에도 여전히 문제가 보이고 매개 변수'header = None'가 필요합니다. – jezrael

관련 문제