2
私は2つのパンダのDataFramesを "マージ連結"しようとしています。基本的には、2つのDataFrameを積み重ねたいのですが、他のDataFrameの値と一致する各DataFrameの行を保持するだけです。だから、例えば:data1
とdata2
でこの操作を行った後、次に列内の値が一致する行のみを保持するpandasデータフレームを連結しますか?
data1:
+---+------------+-----------+-------+
| | first_name | last_name | class |
+---+------------+-----------+-------+
| 0 | Alex | Anderson | 1 |
| 1 | Amy | Ackerman | 2 |
| 2 | Allen | Ali | 3 |
| 3 | Alice | Aoni | 4 |
| 4 | Andrew | Andrews | 4 |
| 5 | Ayoung | Atiches | 5 |
+---+------------+-----------+-------+
data2:
+---+------------+-----------+-------+
| | first_name | last_name | class |
+---+------------+-----------+-------+
| 0 | Billy | Bonder | 4 |
| 1 | Brian | Black | 5 |
| 2 | Bran | Balwner | 6 |
| 3 | Bryce | Brice | 7 |
| 4 | Betty | Btisan | 8 |
| 5 | Bruce | Bronson | 8 |
+---+------------+-----------+-------+
結果のデータ・フレームは次のようになります。基本的に、私は2つのデータセットをマージしようとしている
result:
+---+------------+-----------+-------+
| | first_name | last_name | class |
+---+------------+-----------+-------+
| 3 | Alice | Aoni | 4 |
| 4 | Andrew | Andrews | 4 |
| 5 | Ayoung | Atiches | 5 |
| 0 | Billy | Bonder | 4 |
| 1 | Brian | Black | 5 |
+---+------------+-----------+-------+
、その後、列を積み重ねる。私はこれを行うためのいくつかの方法を考えることができますが、彼らはすべての種類のハックです。私はdata1
とdata2
をマージして、列を積み重ね、またはのようなマップを使用することができます。
map1 = data1['subject_id'].map(lambda x: x in list(data2['subject_id']))
map2 = data2['subject_id'].map(lambda x: x in list(data1['subject_id']))
pd.concat([data1[map1], data2[map2]])
しかし、これまでよりエレガントな解決策はありますか?