47

2 つのデータフレームがあるとします。

import pandas
....
....
test1 = pandas.DataFrame([1,2,3,4,5])
....
....
test2 = pandas.DataFrame([4,2,1,3,7])
....

試してみtest1.append(test2)ましたが、R と同等ですrbind

cbindRの関数と同様に、データフレームの2つの列として2つを組み合わせるにはどうすればよいですか?

4

2 に答える 2

5

concat(axis = 1)パンダとcbind()Rには重要な違いがあります。

concat index でマージ/整列を試みます。R データフレームにはインデックスの概念はありません。2 つの pandas データフレームのインデックスがずれている場合、結果は cbind とは異なります (行数が同じであっても)。インデックスが整列していることを確認するか、インデックスを削除/リセットする必要があります。

例:

import pandas as pd

test1 = pd.DataFrame([1,2,3,4,5])
test1.index = ['a','b','c','d','e']
test2 = pd.DataFrame([4,2,1,3,7])
test2.index = ['d','e','f','g','h']

pd.concat([test1, test2], axis=1)

     0    0
a  1.0  NaN
b  2.0  NaN
c  3.0  NaN
d  4.0  4.0
e  5.0  2.0
f  NaN  1.0
g  NaN  3.0
h  NaN  7.0

pd.concat([test1.reset_index(drop=True), test2.reset_index(drop=True)], axis=1)

   0  1
0  1  4
1  2  2
2  3  1
3  4  3
4  5  7

pd.concat([test1.reset_index(), test2.reset_index(drop=True)], axis=1)      

  index  0  0
0     a  1  4
1     b  2  2
2     c  3  1
3     d  4  3
4     e  5  7
于 2021-11-07T16:31:03.397 に答える