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:"