Olá,
Toda vez que você faz um "slice" de um DataFrame (um filtro), o pandas por trás gera uma "view" desse DataFrame, como se fosse uma cópia na memória para refletir seu filtro, o que não significa que aquela cópia é o DataFrame original, e esse é o motivo do erro. É um conceito confuso e te garanto que você não está sozinho nessa confusão, todo mundo passa por isso. Abaixo um exemplo para te ajudar a corrigir isso:
selecao = df_total['Ativo'].str.len() >= 7 # isso te retornou um vetor de True/False onde todo True atende sua condição
df_opcoes = df_total[selecao] # isso gerou uma 'slice' do sou DataFrame só com as linhas que atendem sua condição, quer seria apenas uma visão do df_total, mudanças no seu df_opcoes não serão refletidas no seu df_total
df_opcoes['L/P'] = # nessa linha você está tentando editar/sobrescrever os dados de uma cópia do seu df_total original, e ai está o erro, o pandas não permite isso (antigamente só emitia warnings, mas isso fazia que muita gente desabilitasse o warning e seguisse em frente com erros)
Uma opção seria:
selecao = df_total['Ativo'].str.len() >= 7
df_opcoes = df_total[selecao].index # aqui você vai pegar apenas o index das linhas que você quer editar
df_total.loc[df_opcoes, 'L/P'] = df_total['Financeiro Venda'] - df_total['Financeiro Compra'] # a mudança aqui é que você está editando o df_total, se você deseja preservar os valor o ideal seria criar uma cópia. A função .loc precisa de [index, coluna], e como agora seu df_opcoes possui o index, ele atende as condições. Ainda que na subtração você não esteja utilizando o df_total filtrado, como dentro do seu .loc você utilizou um index, apenas as linhas do index serão alteradas
df_opcoes
Pandas é poderoso, mas essa parte é confusa no começo.
Abs