2017-09-16 2 views
-1

Windows에서 python 3.0을 사용하고 있습니다.두 csv 파일을 한 줄씩 병합하는 방법

내가 2 개 CSV 파일

file1.csv

0, 10,12 
0,11,12 
1,15,12 
2, 17,12 

file2.csv

0, 2, 1 
1,22, 1 
3, 11, 1 

output.csv

0, 10,12 
0,11,12 
0, 2, 1 
1,15,12 
1,22, 1 
2, 17,12 
3, 11, 1 

이 난 다음 코드를 시도

a = pd.read_csv('file1.csv') 
b = pd.read_csv('file2.csv') 
c = pd.concat([a, b], join='outer') 
c.to_csv("Output.csv", index = False) 

하지만 내 출력은

0, 10,12 
0,11,12 
1,15,12 
2, 17,12 
0, 2, 1 
1,22, 1 
3, 11, 1 

당신이 좀 포인터를하시기 바랍니다 줄 수있다. 나는 Python을 처음 사용한다.

+2

논리는 무엇인가 :

from heapq import merge def reader(f): for line in file(f): yield line.replace(' ',''), line inputs = [reader(f) for f in ['file1.csv', 'file2.csv']] for pair in merge(*inputs): print pair[1], 

이 순서를 생성? 선을 어떻게 분류해야합니까? –

+0

그래서 나란히 놓고 싶습니까? 나는' _array = np.genfromtxt ('input_filename.csv', delimiter = ',')'로 읽었고'out = np.hstack ([left_array, right_array])와 나란히 놓았다. '을 입력하고'np.savetxt ('output_filename.csv', out, delimiter = ',')'파일을 작성하십시오. – Michael

+0

'savetxt'에서 형식을 지정할 수도 있습니다. 문서를보십시오. 두 입력 모두 예제 데이터에없는 경우와 동일한 수의 행이있는 경우에만 작동 할 수 있습니다. 당신이하고자하는 것을 더 명확하게 명시 해주십시오. 주어진 아이디어와 주어진 결과물을 제시하십시오. – Michael

답변

0

당신이 연결할 수 있으며, 팬더와 함께 그들을 분류 :

df = pd.concat([a, b]).astype('str') 

df = df.sort_values(list(df.columns)) 

df.to_csv('Output.csv', index=False) 
0

이 출력 파일을 작성하지 않습니다하지만 heapq.merge가 도울 수있는 방법을 보여줍니다 샘플 데이터와

from heapq import merge 
inputs = [file(f) for f in ['file1.csv', 'file2.csv']] 
for line in merge(*inputs): 
    print line, 

을 생산
0, 10,12 
0, 2, 1 
0,11,12 
1,15,12 
1,22, 1 
2, 17,12 
3, 11, 1 

그러나 이것은 초기 출력 순서와 샘플 출력이 다릅니다 nes :

0, 10,12 
0,11,12 
0, 2, 1 

그러나이 순서를 생성하는 방법을 잘 모르겠습니다. 샘플 출력 행은 문자 또는 숫자 열에 의해 정렬 된 것으로 보이지 않습니다 (필드의 숫자 순서는 아마도 0, 2, 1 일 것입니다).

편집 : 줄이 공백이없는 것처럼 정렬됩니다. 다음 예 :

0, 10,12 
0,11,12 
0, 2, 1 
1,15,12 
1,22, 1 
2, 17,12 
3, 11, 1 
관련 문제