2016-04-06 6 views
0

リストに3つのdfsがあります。各dfは同じ行を持ちますが、これらの行の順序は同じではありません。彼らは価値についてソートされています。パンダ:コンカットで同じラベルのdfsをソート

これらのdfsを一緒に連結したいのですが、行ラベルの順序が一致しないため失敗します。

私のDFS:ここ

 Total   Total   Total 
    sony 5  hond 9  phon 6 
    hond 6  sony 3  phon 3 
    phon 8  phon 4  hond 2 
    phon 3  phon 5  sony 8 

は、連結しようとする方法である:

pd.concat(listofdfs, axis=1) 

は、それらをソートすることなく、これらのDFSをCONCATする方法はありますか?私は、各dfが同じラベルを含んでいるので、concatはラベルの位置付けに気にしないと思ったのですか?

+0

パス 'ignore_index = true'を' pd.concat(listofdfs、軸= 1、ignore_index = TRUE) ' – EdChum

+0

を動作するはずをValueError:渡された値の形状は(6,15)、インデックスは(6,14)を意味します。ただし、各dfを並べ替えると、concatは正常に動作します。 –

+0

あなたは 'join 'を繰り返したいのですか? – EdChum

答えて

1

私はそれがバグかもしれないと思う、多分何かの類似6963sort_indexがomitedされている場合

df1 = pd.DataFrame({'Total': {'sony': 5, 'phon': 3, 'hond': 6}}) 
df2 = pd.DataFrame({'Total': {'hond': 9, 'phon': 5, 'sony': 3}}) 
df3 = pd.DataFrame({'Total': {'hond': 2, 'sony': 8, 'phon': 3}}) 

df1 = df1.sort_index() 
df2 = df2.sort_index() 
df3 = df3.sort_index() 

listofdfs = [df1,df2,df3] 

print pd.concat(listofdfs, axis=1) 
     Total Total Total 
hond  6  9  2 
phon  8  4  6 
phon  3  5  3 
sony  5  3  8 

エラー:私にとって

はすべてDataFramessort_indexを働く

ValueError: Shape of passed values is (3, 4), indices imply (3, 3)

それはconcat使用uniqueインデックス思わインデックスがソートされていない場合は、怒鳴る参照してください。

indexesnumbersにより置換されている:

df1 = pd.DataFrame({'Total': {1: 5, 2: 6, 3: 3}}) 
df2 = pd.DataFrame({'Total': {1: 3, 2: 9, 3: 5}}) 
df3 = pd.DataFrame({'Total': {1: 8, 2: 2, 3: 3}}) 

print df1 
print df2 
print df3 
    Total 
1  5 
2  6 
3  8 
3  3 
    Total 
2  9 
1  3 
3  4 
3  5 
    Total 
3  6 
3  3 
2  2 
1  8 

df1 = df1.sort_index() 
df2 = df2.sort_index() 
df3 = df3.sort_index() 

listofdfs = [df1,df2,df3] 

print pd.concat(listofdfs, axis=1) 
    Total Total Total 
1  5  3  8 
2  6  9  2 
3  8  4  6 
3  3  5  3 

しかしsort_indexをomitedされている場合:

InvalidIndexError: Reindexing only valid with uniquely valued Index objects

関連する問題