【Pandas】drop・popの違いは？英語文献の翻訳も付けて解説します　no.21

![見出しを追加 (48).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/b788f3ad-929c-3f76-4b91-fd03f4f4f3a9.png)
こんにちは、まゆみです。

Pandas の記事をシリーズで書いています。

今回の記事は第21回目になります。

今回の記事では、

>Pandasの.drop()メソッドと.pop()メソッドの違い

を解説していこうと思います。

.drop()と.pop()の違いについてネットを探してみると、色んな情報がありました。

英語で解説しているのが多かったので、<font color="Red">翻訳も載せつつ、解説していきますね。</font>

ではさっそく始めていきます。

#.drop()と.pop()はPandasドキュメントでどう書かれている？
.drop()も.pop()も指定したコラムを削除するという共通点はあります。

![スクリーンショット 2021-03-25 104202.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/441d4b49-2656-639d-cb90-95cce730814f.jpeg)
引用元:[Pandasドキュメント](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop.html)

![スクリーンショット 2021-03-25 104220.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/824ab4d8-6df0-29ce-9ae6-d101fc43328a.jpeg)
引用元:[Pandasドキュメント](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pop.html)
ただ、一言で、『コラムを削除する』と言っても、色々な削除の仕方があります。

>.pop()や.drop()で削除した『コラム自体』も後で使えるのか

>削除されたものが返されるのか、DataFrameから特定の物が削除されたDataFrameが返されるのか


このちょっとした違いを理解しないと、.pop()を使うべきか.drop()を使うべきか迷ってしまうと思うので、具体的に解説していきます

[下記のサイトからの引用](https://www.dataindependent.com/pandas/pandas-pop/#:~:text=drop()%20will%20return%20the,()%20will%20return%20the%20column.&text=drop()%20you%20can%20pass,be%20dropped%20from%20your%20DataFrame.)にも、.pop()と.drop()の違いのヒントが書かれています

![スクリーンショット 2021-03-25 104440.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/0869e932-ab15-bc44-ff81-b3cd390004de.jpeg)
赤で囲った部分の翻訳をすると

>(.pop()について)
>あなたが削除したコラムをSeriesとして返してくれるので、それを使うことができる(もしそうしたいのならば)

と書いています

では、.pop()メソッドの方から、どのような事ができるのか説明していきますね。

#.pop()メソッド
[disney映画に関するデータ](https://www.kaggle.com/prateekmaj21/disney-movies)を読み込み、新たに作ったDataFrameオブジェクト をdisneyという変数に代入しました。
![スクリーンショット 2021-03-25 105905.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/f1f8cd1d-5e70-4b30-0ace-d4249ccba31f.jpeg)


そのDataFrameから、.pop()メソッドを使ってtotal_grossというコラムを削除します。

そして<font color="Red">この削除したtotal_grossコラムをSeriesとして使うことができます。</font>


![スクリーンショット 2021-03-25 110559.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/c90e4630-ac6d-3131-bb2f-419e795769d1.jpeg)

DataFrame の一つのコラムだった部分が、独立してSeries になりました。

![スクリーンショット 2021-03-25 110622.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/cab2d573-221b-abde-e21e-d9e601eacbce.jpeg)

.pop()メソッドを使って削除した後、オリジナルのDataFrameはどのようになっているか見てみると、<font color="Red">.pop()メソッドで削除されたコラムがオリジナルのDataFrame からは切り離されている</font>のが分かります。

![スクリーンショット 2021-03-25 110712.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/0031a94f-f7d3-1162-59cd-054362446b52.jpeg)

![スクリーンショット 2021-03-25 111305.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/e075e302-903c-cbed-b64c-da810fdb93dc.jpeg)

引用元：[DATA INDEPENDENT](https://www.dataindependent.com/pandas/pandas-pop/#:~:text=drop()%20will%20return%20the,()%20will%20return%20the%20column.&text=drop()%20you%20can%20pass,be%20dropped%20from%20your%20DataFrame.)
>翻訳：.pop()と.drop()は非常に似ている。.drop()は特定のコラムが除かれたDataFrame を返す。
>一方.pop()はコラムを返す

![pop()メソッド.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/be8dcfa5-d2fa-8dab-a525-34cdac5e7160.png)
.pop()メソッドはオリジナルのDataFrameを1枚のシートと考え、そのシートから特定のコラムを切り取る感じ。
特定のコラムを切り取った後のDataFrameは取り除かれた部分を除いて糊付けされ、それが新たなDataFrameになる感じです。

#.drop()メソッドを使う
次に.drop()メソッドを使って特定のコラムを削除します

.drop()メソッドは、特定のインデックスでもコラムでもどちらでも削除する事ができるので、axis=1 にして、<font color="Red">movie_title というコラムを削除</font>します。

![スクリーンショット 2021-03-25 112743.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/b876f2fc-5c80-c61f-3da6-4af0faa2686b.jpeg)

.drop()メソッドを使うとどうなるでしょうか。

![スクリーンショット 2021-03-25 113514.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/27ddb456-63d3-6bdd-50e7-20d8b6a778d8.jpeg)

指定されたコラムが独立したSeriesとして返される.pop()とは違い、.drop()では特定のコラムが削除された<font color="Red">DataFrame</font>が返されました。

.drop()メソッドは、drop = 切り離すという日本語訳でもわかるように、DataFrameからあるコラムを切り離すことをしてくれます


また、dropという英語は『トカゲのしっぽが切り離される』という意味でも使うので、<font color="Red">しっぽが切り離されたトカゲ</font>を想像すると覚えやすいと思います


![しっぽの切れたトカゲが (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1011305/4886c223-add7-0d9d-f16d-7bde1a76bee6.png)

#まとめ

今回の記事では、.pop()と.drop()で、コラムを削除するときの違いについて解説してみました。

他にも.drop()はコラムだけでなく、インデックスも削除できるという違いはありますが、今回はコラムを削除するときの相違点ということだけにフォーカスして記事を書いてみました。

また引き続きPandasについての記事を書いていきますね。