2016-10-19 3 views
1

길이가 다른 88 개의 서로 다른 데이터 프레임이 있으므로 연결해야합니다. 그리고 그것들은 모두 하나의 디렉토리에 있으며, 다음과 같은 파이썬 스크립트를 사용하여 그러한 단일 데이터 프레임을 생성했습니다. 여기 길이가 다른 여러 개의 데이터 프레임 연결

ValueError: Shape of passed values is (88, 57914), indices imply (88, 57905) 

내 목표는 칼럼 - 연결하는 것입니다, 그 데이터의 각 이후

path = 'GTFS/' 
    files = os.listdir(path) 

    files_txt = [os.path.join(path,i) for i in files if i.endswith('.tsv')] 

    ## Change it into dataframe 
    dfs = [pd.DataFrame.from_csv(x, sep='\t')[[6]] for x in files_txt] 
    ##Concatenate it 
    merged = pd.concat(dfs,axis=1) 

프레임은 서로 다른 길이 있습니다 또는 오류 메시지가 다음 날 던지는 형성, 내가 뭘하려 내 입력은 스크립트에서와 같이 7 번째 열을 사용해야하는 88 개의 개별 데이터 프레임이므로 88 개의 열이있는 단일 데이터 프레임으로 현명하게 처리해야합니다. 모든 솔루션이나 제안의 핵심은 서로 다른 데이터 프레임의 list을하고 대신 개별 연결의 목록을 연결하는 당신에게

답변

2

감사 데이터 프레임 을 연결이 경우에 좋은 것입니다.

하나의 열 랜덤 길이 데이터로 채워진 1df을 작성하여 데이터를 시뮬레이트하기 위해 csv 파일에 저장했습니다.

import pandas as pd 
import numpy as np 
from random import randint 


#generate 10 df and save to seperate csv files 
for i in range(1,11): 
    dfi = pd.DataFrame({'a':np.arange(randint(2,11))}) 
    csv_file = "file{0}.csv".format(i) 
    dfi.to_csv(csv_file, sep='\t') 
    print "saving file", csv_file 

그런 다음 우리는, 우리가 list

#concatenate frames list 
result = pd.concat(frames, axis=1) 
print result 

결과는 10 개 프레임입니다 연결하여 별도의 데이터 프레임에 그 10 개 csv 파일을 읽고 마지막으로 list

#read previously saved csv files into 10 seperate df 
# and add to list 
frames = [] 
for x in range(1,10): 
    csv_file = "file{0}.csv".format(x) 
    newdf = pd.DataFrame.from_csv(csv_file, sep='\t') 
    frames.append(newdf) 

에 저장 가변 길이는 열 단위로 연결되어 df으로 단일화됩니다.

saving file file1.csv 
saving file file2.csv 
saving file file3.csv 
saving file file4.csv 
saving file file5.csv 
saving file file6.csv 
saving file file7.csv 
saving file file8.csv 
saving file file9.csv 
saving file file10.csv 
     a a a a a a a a a 
0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 
1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1 1.0 
2 2.0 2.0 2.0 2.0 2.0 2.0 2.0 2 2.0 
3 3.0 3.0 3.0 3.0 3.0 NaN 3.0 3 NaN 
4 4.0 4.0 4.0 4.0 4.0 NaN NaN 4 NaN 
5 5.0 5.0 5.0 5.0 5.0 NaN NaN 5 NaN 
6 6.0 6.0 6.0 6.0 6.0 NaN NaN 6 NaN 
7 NaN 7.0 7.0 7.0 7.0 NaN NaN 7 NaN 
8 NaN 8.0 NaN NaN 8.0 NaN NaN 8 NaN 
9 NaN NaN NaN NaN 9.0 NaN NaN 9 NaN 
10 NaN NaN NaN NaN NaN NaN NaN 10 NaN 

희망하시는 바입니다. 병합, 조인 및 연결에 대한 좋은 예는 here입니다.

관련 문제