Quais regras o Pandas usa para gerar uma visão versus uma cópia?

Estou confuso sobre as regras que o Pandas usa ao decidir que uma seleção de um dataframe é uma cópia do dataframe original ou uma exibição no original.

Se eu tiver, por exemplo,

df = pd.DataFrame(np.random.randn(8,8), columns=list('ABCDEFGH'), index=range(1,9))

Eu entendo que umquery retorna uma cópia para que algo como

foo = df.query('2 < index <= 5')
foo.loc[:,'E'] = 40

não terá efeito no quadro de dados original,df. Também entendo que fatias escalares ou nomeadas retornam uma exibição, para que atribuições a elas, como

df.iloc[3] = 70

ou

df.ix[1,'B':'E'] = 222

vai mudardf. Mas estou perdido quando se trata de casos mais complicados. Por exemplo,

df[df.C <= df.B]  = 7654321

alterardf, mas

df[df.C <= df.B].ix[:,'B':'E']

não.

Existe uma regra simples que o Pandas está usando e que estou perdendo? O que está acontecendo nesses casos específicos; e, em particular, como altero todos os valores (ou um subconjunto de valores) em um dataframe que atenda a uma consulta específica (como estou tentando fazer no último exemplo acima)?

Nota: Não é o mesmo queessa questão; e eu lia documentação, mas não sou iluminado por ele. Também li as perguntas "Relacionadas" sobre este tópico, mas ainda estou perdendo a regra simples que o Pandas está usando e como a aplicaria para - por exemplo - modificar os valores (ou um subconjunto de valores) em um quadro de dados que atenda a uma consulta específica.

questionAnswers(1)

yourAnswerToTheQuestion