[python] 파이썬에서 200 개의 csv 파일을 병합하는 방법

여러분, 여기에는 SH (1)에서 SH (200)까지 이름이 지정된 200 개의 개별 csv 파일이 있습니다. 단일 csv 파일로 병합하고 싶습니다. 어떻게하니?



답변

ghostdog74가 말했듯이 이번에는 헤더가 있습니다.

fout=open("out.csv","a")
# first file:
for line in open("sh1.csv"):
    fout.write(line)
# now the rest:    
for num in range(2,201):
    f = open("sh"+str(num)+".csv")
    f.next() # skip the header
    for line in f:
         fout.write(line)
    f.close() # not really needed
fout.close()


답변

왜 안돼 sed 1d sh*.csv > merged.csv ?

때로는 파이썬을 사용할 필요조차 없습니다!


답변

사용하다 StackOverflow의 답변을 받아 당신이 추가 한 후이 코드를 실행하려는 CSV 파일의 목록을 만들 수 :

import pandas as pd
combined_csv = pd.concat( [ pd.read_csv(f) for f in filenames ] )

단일 csv 파일로 내보내려면 다음을 사용하십시오.

combined_csv.to_csv( "combined_csv.csv", index=False )


답변

fout=open("out.csv","a")
for num in range(1,201):
    for line in open("sh"+str(num)+".csv"):
         fout.write(line)
fout.close()


답변

바구니에있는 다른 코드 예제를 살펴 보겠습니다.

from glob import glob

with open('singleDataFile.csv', 'a') as singleFile:
    for csvFile in glob('*.csv'):
        for line in open(csvFile, 'r'):
            singleFile.write(line)


답변

“병합”이 의미하는 바에 따라 다릅니다. 동일한 열이 있습니까? 헤더가 있습니까? 예를 들어, 모두 동일한 열이 있고 헤더가없는 경우 간단한 연결만으로도 충분합니다 (쓰기를 위해 대상 파일을 열고, 읽기 위해 각각을 여는 소스를 반복하고, 읽기 위해 열기 소스의 shutil.copyfileobj 를 사용 하여 쓰기 위해 열기 대상, 소스 닫기, 계속 반복- with명령문을 사용 하여 대신 닫기를 수행하십시오). 열이 같지만 헤더도 readline있는 경우 첫 번째 파일을 제외하고 각 소스 파일에이 파일 이 있어야합니다 . 첫 번째 파일을 열어서 대상으로 복사하기 전에 헤더 행을 건너 뜁니다.

CSV 파일이 모두 동일한 열을 가지고 있지 않다면 어떤 의미로 “병합”하는지 정의해야합니다 (예 : SQL JOIN? 또는 모두 동일한 수의 행이있는 경우 “수평”? 등). )-이 경우 당신이 의미하는 바를 추측하기가 어렵습니다.


답변

병합 된 CSV가 Python에서 사용되는 경우를 사용하여 인수 globfileinput.input()통해 전달할 파일 목록을 files가져온 다음 csv모듈을 사용하여 한 번에 모두 읽습니다.