1. ホーム
  2. python

Pandasのカラムバインディング(cbind)で2つのデータフレームを結合する

2023-10-15 20:15:29

質問

データフレーム df_a にidの情報が入っています。

    unique_id lacet_number 
15    5570613  TLA-0138365 
24    5025490  EMP-0138757 
36    4354431  DXN-0025343 

と別のデータフレーム df_b の行に対応する同じ数の行があります。 df_a :

     latitude  longitude 
0  -93.193560  31.217029  
1  -93.948082  35.360874  
2 -103.131508  37.787609  

やりたいことは、単純にcbindしてget。

    unique_id lacet_number      latitude  longitude 
0     5570613  TLA-0138365    -93.193560  31.217029  
1     5025490  EMP-0138757    -93.948082  35.360874  
2     4354431  DXN-0025343   -103.131508  37.787609  

試してみたこと

df_c = pd.concat([df_a, df_b], axis=1)

で、外部結合ができます。

    unique_id lacet_number    latitude  longitude
0         NaN          NaN  -93.193560  31.217029
1         NaN          NaN  -93.948082  35.360874
2         NaN          NaN -103.131508  37.787609
15    5570613  TLA-0138365         NaN        NaN
24    5025490  EMP-0138757         NaN        NaN
36    4354431  DXN-0025343         NaN        NaN

問題は、2つのデータフレームのインデックスが一致しないことです。のドキュメントを読みましたが pandas.concat のドキュメントを読むと、オプションとして ignore_index . しかし、それは連結軸(私の場合は列)にのみ適用され、確かにそれは私にとって正しい選択ではありません。そこで質問なのですが、これを実現する簡単な方法はあるのでしょうか?

どのように解決するのですか?

インデックスの行の値が同じであることが確かならば、インデックスの整列順序を避けるために、単に reset_index() を呼び出すと、インデックスの値がリセットされて 0 :

df_c = pd.concat([df_a.reset_index(drop=True), df_b], axis=1)