fava-envelope icon indicating copy to clipboard operation
fava-envelope copied to clipboard

Preparing for Pandas 3 - Chained Assignments

Open JonBoyleCoding opened this issue 1 year ago • 0 comments

I've started getting warnings when using 2.2.1 of pandas.

FutureWarning: ChainedAssignmentError: behaviour will change in pandas 3.0!
You are setting values through chained assignment. Currently this works in certain cases, but when using Copy-on-Write (which will become the default behaviour in pandas 3.0) this will never work to update the original DataFrame or Series, because the intermediate object on which we are setting values will behave as a copy.
A typical example is when you are setting values in a column of a DataFrame, like:

df["col"][row_indexer] = value

Use `df.loc[row_indexer, "col"] = values` instead, to perform the assignment in a single step and ensure this keeps updating the original `df`.

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy

  self.envelope_df[month, "available"][index] = (

I thought it might be worth mentioning as there are a number of lines in https://github.com/polarmutex/fava-envelope/blob/5fd2cdebba66c31b6111233437358ed596e3170f/src/fava_envelope/modules/beancount_envelope.py that this pops up for. I don't have exact line numbers as I use some custom patches.

JonBoyleCoding avatar May 11 '24 16:05 JonBoyleCoding