Python:DataFrameのデータを削除してみる inplaceについて
先日の↓
続きです。
dfについての確認
昨日のプログラミンングで使った
dfとdf_newについてのおさらい。
import pandas as pd data = {"name":["aaa","bbb","ccc"],"age":["18","20","22"],"add":["Tokyo","Osaka","Nagoya"]} #dfにdataをいれる df = pd.DataFrame(data) #df_newにdfの"age"行を削除したものをいれる df_new = df.drop("age",axis = "columns")
このプログラムを実行すると、
dfには下のようなデータが入っています。
name | age | add | |
0 | aaa | 18 | Tokyo |
1 | bbb | 20 | Osaka |
2 | ccc | 22 | Nagoya |
df_newにはdfから"age"行を削除したデータが入っています。
name | add | |
0 | aaa | Tokyo |
1 | bbb | Osaka |
2 | ccc | Nagoya |
プログラムでdf_new = df.drop("age",axis = "columns")と書きましたが、
dfの値自体には何も変化はなく、"age"列が削除されたものは返り値(今回の場合はdf_new)として返ります。
inplaceを使うとどうなる?
次に以下のようなプログラムを書いてみます。 先ほどのプログラムとの違いはdropのところにinplaceを追加しました。
import pandas as pd data = {"name":["aaa","bbb","ccc"],"age":["18","20","22"],"add":["Tokyo","Osaka","Nagoya"]} #dfにdataをいれる df = pd.DataFrame(data) #df_newにdfの"age"行を削除したものをいれる #今回はここにinplaceを追加する! df_new = df.drop("age",axis = "columns",inplace = True)
これを実行すると、dfの結果は以下のようになります。
name | add | |
0 | aaa | Tokyo |
1 | bbb | Osaka |
2 | ccc | Nagoya |
また、df_newには何もデータが入っていません。
これよりinplaceを使うと元データ側(df)の"age"を削除し、
返り値(df_new)には何も返さないということがわかります。
結論
元データから完全にデータ(今回だと"age"列)を削除したい場合はinplaceを指定する。
完全にデータを削除しては困る場合は、
- inplaceを使わない
- 元データ(df)を一度別のDataFrameにコピーをしてから作業を行う。
といったことをしたほうがいいと思います。
<最終更新日:2021/08/15>
2021/08/15 投稿