1

So I learned from this answer to this question that in pandas 0.20.3 and above reassigning the values of a dataframe works without giving the SettingWithCopyWarning in many ways as follows:

df = pd.DataFrame(np.ones((5,6)),columns=['one','two','three',
                                       'four','five','six'])
df.one *=5
df.two = df.two*5
df.three = df.three.multiply(5)
df['four'] = df['four']*5
df.loc[:, 'five'] *=5
df.iloc[:, 5] = df.iloc[:, 5]*5

HOWEVER

If I were to take a part of that dataframe like this for example:

df1 = df[(df.index>1)&(df.index<5)]

And then try one of the above methods for reassigning a column like so:

df.one *=5

THEN I will get the SettingWithCopyWarning.

So is this a bug or am I just missing something about the way pandas expects for this kind of operation to work?

remington
  • 21
  • 3
  • _All_ those operations result in chained assignment if you precede it with `df1 = df[...]`. Perhaps [this answer](https://stackoverflow.com/a/53954986/4909087) of mine might be useful. – cs95 Feb 06 '19 at 02:43

0 Answers0