LoginSignup
6
4

More than 5 years have passed since last update.

pandasのデータフレームを連結したときに列の順番を変えない。

Last updated at Posted at 2017-03-30

問題

pandas のデータフレームを pd.concat を用いて連結したとき、列の順番が勝手に変わってしまうことがある。

>>> df = pd.DataFrame([[1, 2], [3, 4]], index=[0, 1], columns=['B', 'A'])
>>> df2 = pd.DataFrame([[1, 2], [3, 4]], index=[0, 1], columns=['A', 'B'])
>>> pd.concat([df, df2])
   A  B # df に合わせて B A がいい!
0  2  1
1  4  3
0  1  2
1  3  4

解決方法

列の順番を変えないためには、DataFrame.append メソッドを使う。

>>> df.append(df2)[df.columns.tolist()]
   B  A
0  1  2
1  3  4
0  2  1
1  4  3

これで df の列の順番を保ったままデータフレームを結合できる。複数のデータフレームを結合する場合は、df.append([df1, df2]) などデータフレームのリストを渡せばいい。

ただし、DataFrame.append は遅いのでたくさんの行を結合する場合は使わないほうがよい。

参考

追記

実行環境を書き忘れていたので追記

  • Python 3.6.1
  • pandas 0.19.2
6
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4