Я получаю предупреждения SettingWithCopyWarning
для следующих строк кодов, где data
- это фреймворк Panda, а amount
- это имя столбца (серии) в этом фрейме данных:
data['amount'] = data['amount'].astype(float)
data["amount"].fillna(data.groupby("num")["amount"].transform("mean"), inplace=True)
data["amount"].fillna(mean_avg, inplace=True)
Глядя на этот код, очевидно ли, что я делаю что-то неоптимальное? Если да, можете ли вы сообщить мне строки кода замены?
Я знаю следующее предупреждение и хотел бы думать, что предупреждения в моем случае являются ложными срабатываниями:
Прикомандированные предупреждения/исключения назначений направлены на информирование пользователя возможного недопустимого назначения. Могут быть ложные срабатывания; в ситуациях, когда непреднамеренно сообщается цепочное присвоение.
ИЗМЕНИТЬ: код, приводящий к первой ошибке предупреждения об ошибке.
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:"