9

行がどのデータフレームから来たかを示すマルチレベルの列命名スキームを作成しながら、2 つの DataFrame をマージしたいと思います。例えば:

In [98]: A=pd.DataFrame(np.arange(9.).reshape(3,3),columns=list('abc'))
In [99]: A
Out[99]: 
   a  b  c
0  0  1  2
1  3  4  5
2  6  7  8

In [100]: B=A.copy()

を使用するpd.merge()と、次のようになります。

In [104]: pd.merge(A,B,left_index=True,right_index=True)
Out[104]: 
   a_x  b_x  c_x  a_y  b_y  c_y
0    0    1    2    0    1    2
1    3    4    5    3    4    5
2    6    7    8    6    7    8

これは私がそのステートメントで期待するものです。私が望むのは(しかし、取得方法がわかりません!)

In [104]: <<one or more statements>>
Out[104]: 
     A              B
     a    b    c    a    b    c
0    0    1    2    0    1    2
1    3    4    5    3    4    5
2    6    7    8    6    7    8

元の呼び出しを変更せずにこれを行うことはできますか? pd.DataFrame.csv ファイルからデータフレームのデータを読み取っていますが、それが問題である可能性があります。

4

2 に答える 2

7

最初のケースは、A、B の間で任意に順序付けできます (列ではなく、A または B の順序のみ) 2 つ目は順序を維持する必要があります

私見これはパニックです!

In [5]: concat(dict(A = A, B = B),axis=1)
Out[5]: 
   A        B      
   a  b  c  a  b  c
0  0  1  2  0  1  2
1  3  4  5  3  4  5
2  6  7  8  6  7  8

In [6]: concat([ A, B ], keys=['A','B'],axis=1)
Out[6]: 
   A        B      
   a  b  c  a  b  c
0  0  1  2  0  1  2
1  3  4  5  3  4  5
2  6  7  8  6  7  8
于 2013-09-23T18:57:11.720 に答える