回答編集履歴

1

inplaceオプションの説明を追加

2017/06/12 23:29

投稿

magichan
magichan

スコア15898

test CHANGED
@@ -63,3 +63,59 @@
63
63
  ``keep='last'``とすると最後の行(5行目)が残ります。
64
64
 
65
65
  また、``keep=False``とすると両方の行が削除されます
66
+
67
+
68
+
69
+ ---
70
+
71
+
72
+
73
+ **【追記】**
74
+
75
+
76
+
77
+ ``inplace`` オプションの説明です。
78
+
79
+
80
+
81
+ 例えば、``df`` 変数に対して、
82
+
83
+
84
+
85
+ ```Python
86
+
87
+ df.drop_duplicates(inplace=True)
88
+
89
+ ```
90
+
91
+
92
+
93
+ のように ``inplace=True`` の引数と共に ``drop_duplicates()`` を実行すると、 ``df`` 変数に格納されているデータフレーム**自身**から重複行が削除されます。つまりこのメソッドは``df``の内容を**変更**してしまうことになります。
94
+
95
+ > このようにオブジェクト自身の内容を変更してしまうメソッドを 『**破壊的メソッド**』とよびます。
96
+
97
+
98
+
99
+ 一方、
100
+
101
+
102
+
103
+ ```Python
104
+
105
+ df2 = df.drop_duplicates(inplace=False)
106
+
107
+ ```
108
+
109
+
110
+
111
+ のように ``inplace=False`` の引数と共に ``drop_duplicates()`` を実行すると、 ``df`` 変数に格納されているデータフレーム自体は全く変更されません。
112
+
113
+ その代わり、``df`` 変数に格納されているデータフレームから重複行の削除を行った結果がリターン値として戻ります。(結果、``df2``に格納されることになります)
114
+
115
+ > このようにオブジェクト自身の内容を変更しないメソッドを 『**非破壊的メソッド**』とよびます。
116
+
117
+
118
+
119
+ Pythonでは慣習的に、**破壊的メソッド** の戻り値は ``None`` となっており、**破壊的メソッド**と**非破壊的メソッド**の 誤用を避けられるようになっております。
120
+
121
+