Pandas: tareas encadenadas

He estado leyendo estoenlazar en "Devolver una vista frente a una copia". Realmente no entiendo como eltarea encadenada concepto en Pandas funciona y cómo el uso de.ix(), .iloc()o.loc() lo afecta

Me sale elSettingWithCopyWarning Advertencias para las siguientes líneas de códigos, dondedata es un marco de datos de Panda yamount es un nombre de columna (Serie) en ese marco de datos:

data['amount'] = data['amount'].astype(float)

data["amount"].fillna(data.groupby("num")["amount"].transform("mean"), inplace=True)

data["amount"].fillna(mean_avg, inplace=True)

Mirando este código, ¿es obvio que estoy haciendo algo subóptimo? Si es así, ¿puedes hacerme saber las líneas de código de reemplazo?

Soy consciente de la siguiente advertencia y me gusta pensar que las advertencias en mi caso son falsos positivos:

Las advertencias / excepciones de la asignación encadenada tienen como objetivo informar al usuario de una asignación posiblemente no válida. Puede haber falsos positivos; situaciones en las que una asignación encadenada se informa inadvertidamente.

EDITAR: el código que conduce al primer error de advertencia de copia.

data['amount'] = data.apply(lambda row: function1(row,date,qty), axis=1) 
data['amount'] = data['amount'].astype(float)

def function1(row,date,qty):
    try:
        if(row['currency'] == 'A'):
            result = row[qty]
        else:
            rate = lookup[lookup['Date']==row[date]][row['currency'] ]
            result = float(rate) * float(row[qty])
        return result
    except ValueError: # generic exception clause
        print "The current row causes an exception:"

Respuestas a la pregunta(1)

Su respuesta a la pregunta