|
12 | 12 |
|
13 | 13 | This PDEP proposes that: |
14 | 14 |
|
15 | | -- The ``inplace`` parameter will be removed from any methods that never can be done inplace |
16 | | -- The ``inplace`` parameter will also be removed from any methods that modify the shape of a pandas object's values or |
17 | | - don't modify the internal values of a pandas object at all. |
18 | | -- In contrast, the ``inplace`` parameter will be kept for any methods that only modify the underlying data of a pandas |
19 | | - object. |
20 | | - - For example, the ``fillna`` method would retain its ``inplace`` keyword, while ``dropna`` (potentially shrinks the |
21 | | - length of a ``DataFrame``/``Series``) and ``rename`` (alters labels not values) would lose their ``inplace`` |
22 | | - keywords |
23 | | - - For those methods, since Copy-on-Write behavior will lazily copy if the result is unchanged, users should reassign |
24 | | - to the same variable to imitate behavior of the ``inplace`` keyword. |
25 | | - e.g. ``df = df.dropna()`` for a DataFrame with no null values. |
26 | | -- The ``copy`` parameter will also be removed, except in constructors and in functions/methods that convert array-likes |
27 | | - to pandas objects (e.g. the ``pandas.array`` function) and functions/methods that export pandas objects to other data |
28 | | - types (e.g. ``DataFrame/Series.to_numpy`` method). |
29 | | -- Open Questions |
30 | | - (These questions are deferred to a later revision, and will not affect the acceptance process of this PDEP.) |
31 | | - - Should ``inplace=True`` return the original pandas object that was operated inplace on? |
32 | | - - What should happen when ``inplace=True`` but the original pandas object cannot be operated inplace on because it |
33 | | - shares its values with another pandas object? |
| 15 | +- The ``inplace`` parameter will be removed from any method which can never update the |
| 16 | + underlying values of a pandas object inplace or which alters the shape of the object, |
| 17 | + and where the `inplace=True` option is only syntactic sugar for reassigning the result |
| 18 | + to the calling DataFrame/Series. |
| 19 | +- As a consequence, the `inplace` parameter is only kept for those methods that can |
| 20 | + modify the underlying values of a pandas object inplace, such as `fillna` or `replace`. |
| 21 | +- With the introduction of Copy-on-Write ([PDEP-7](^1)), users don't need the `inplace` |
| 22 | + keyword to avoid a copy of the data. |
| 23 | +- For those methods that will keep the `inplace=True` option: |
| 24 | + - the method will do an attempt to do the operation inplace but still silently copy |
| 25 | + when needed (for Copy-on-Write), i.e. there is no guarantee it is actually done inplace. |
| 26 | + - the method will return the calling object (`self`), instead of the current `None`. |
34 | 27 |
|
35 | 28 | ## Motivation and Scope |
36 | 29 |
|
@@ -433,7 +426,7 @@ be the default with Copy-on-Write). |
433 | 426 |
|
434 | 427 | ## References |
435 | 428 |
|
436 | | -[^1]: [Copy on Write Specification](https://docs.google.com/document/d/1ZCQ9mx3LBMy-nhwRl33_jgcvWo9IWdEfxDNQ2thyTb0/edit#heading=h.iexejdstiz8u) |
| 429 | +[^1]: [Copy on Write Specification](https://pandas.pydata.org/pdeps/0007-copy-on-write.html) |
437 | 430 | [^2]: <https://github.com/pandas-dev/pandas/issues/48141> |
438 | 431 | [^3]: <https://github.com/pandas-dev/pandas/issues/16529> |
439 | 432 | [^4]: <https://github.com/pandas-dev/pandas/issues/50535> |
|
0 commit comments