- Должен ли я действительно заботиться о предупреждении?
Это зависит. В вашем примере вы сначала ссылаетесь на подмножество данных (df.loc[555]
) и затем устанавливаете значения для этого подмножества. Почти всегда pandas делает copy
исходных данных, а значения настроек на копии не изменят исходный Dataframe, поэтому предупреждение.
В некоторых случаях pandas будет производить view
из исходных данных (например: если все столбцы имеют одинаковый тип dtype.), Значения настроек здесь будут работать как ожидалось.
Если все столбцы в вашей файловой системе имеют одинаковый тип dtype (например: все поплавки), и вы используете iloc
по одному существующему индексу, тогда вы получаете представление, и предупреждение можно игнорировать. Если вы устанавливаете несуществующий индекс, вы находитесь Setting with enlargment, это также ожидаемое поведение, и предупреждение также можно игнорировать.
- Каков рекомендуемый способ сделать это, чтобы предупреждение не всплывало?
Использование df.loc
дал информацию вам при условии, кажется, хорошо. У вас есть несколько альтернатив, чтобы избежать предупреждения:
Во-первых, обновите свою версию панд. Ситуация с этими ложными положительными предупреждениями улучшается с каждой версией, я не получаю ни одного из 0.15.1.
Во-вторых, если вы уверены, что вы делаете, это предполагаемое поведение, то вы можете просто отключить предупреждения в глобальном масштабе с:
pd.set_option('chained_assignment', None)
Наконец, в некоторых случаях вы можете установить is_copy
свойство вашего в результате объект эффективно отключить проверку этого объекта, например:
df_temp = df.loc[555]
df_temp.is_copy = False
Обратите внимание, что этот последний вариант может быть использован только на существующих индексов, новых индексов это вызывает KeyError
.
Любой пример входных данных и ожидаемого результата будет полезен. – Marcin
чувствует, что отличный ответ был поставлен без этого. – user3659451