2016-10-19 16 views
1

私は連結する必要がある異なる長さの88の異なるデータフレームを持っています。そしてそのすべてが1つのディレクトリにあり、私はこのような単一のデータフレームを生成するために以下のpythonスクリプトを使用しました。ここで異なる長さの複数のデータフレームを連結する

は、それらのデータフレームの各々は、異なる長さのものであるか、そのエラーメッセージ、次の私を投げ形状は、

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

ありがとうございデータフレーム を連結するために、この場合には素晴らしいことです。

1列のランダムな長さのデータで埋められた10 dfを作成し、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) 

に保存します可変長の列を1つに連結します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です。

関連する問題